算法: C语言实现笔记
#include "stdafx.h"
#include <STDIO.H>
#define N 40
int main()
{
int i, p, q, t, id[N];
for(i = 0; i < N ; i++)
id[i] = i;
while ((scanf("%d %d", &p, &q)) == 2)
{
if (id[p] == id[q])//就是为了把id[q]的值全部转换成id[p],所以相等就不需要操作了
continue;
for (t = id[p], i= 0; i< N; i++)
{
if (t == id[p]) id[i] = id[q];//其实不用t变量一样可以成功替换
printf(" %d ", id[i]);
}
}
return 0;
}
这个算法其实比较难解释,好难用中文说明。就像是文本替换那样把相关的数字全部替换吧。
q,p有点像索引的感觉。
if (id[i] == id[p]) id[i] = id[q];//id[p]被替换成id[q]
这个代码和书上的源代码不同,输入输出还有位置修改过。