呃……最小生成树的算法有两种,从你的问法看,感觉你对算法有点误会了。
权值是边的权值,不是节点的权值哦,所以我们涉及的是边。你说的那个算法是:
初始集合为空集,然后找权值最小的边,加入。
然后重复:以集合里面的边涉及的节点为初始节点,找出和这些节点相连的连向其他节点的边(即不重复边),从中选出权值最小的边,加入集合。
直到所有的节点都已经被包括。主要有两个:
1.普里姆(prim)算法
特点:时间复杂度为o(n2).适合于求边稠密的最小生成树。
2.克鲁斯卡尔(kruskal)算法
特点:时间复杂度为o(eloge)(e为网中边数),适合于求稀疏的网的最小生成树。
假设19位的号码在A1,则B1输入
=A1&RIGHT(SUM(2*MID(A1,ROW($1:$9)*2,1)-9*(MID(A1,ROW($1:$9)*2,1)-4>0),--MID(A1,ROW($1:$10)*2-1,1)))
=A1&MOD(SUM(2*MID(A1,ROW($1:$9)*2,1)-9*(MID(A1,ROW($1:$9)*2,1)-4>0),--MID(A1,ROW($1:$10)*2-1,1)),10)
=A1&MOD(SUM(MID(A1,ROW($1:$19),1)*(1+MOD(ROW($2:$20),2))-9*(MID(A1,ROW($1:$19),1)*MOD(ROW($2:$20),2)-4>0)),10)
均需按【CTRL+SHift+回车】后,B1得到20为(最后一位为校检码)的编码。
=A1&10-MOD(SUM(2*MID(A1,ROW($1:$10)*2-1,1)-9*(MID(A1,ROW($1:$10)*2-1,1)-4>0))+SUM(--MID(A1,ROW($1:$9)*2,1)),10)
公式以CTRL+SHIFT+enter三键结束。貌似很复杂,不用宏可能不行
再看看别人怎么说的。