i a b
1 4 2
2 2 3
3 3 5
有这样一对数组path,i可当作编号,每一横行可以当作一条记录path[i],若path[x].b=path[y].a那么可生成一个新的项path[f].a=path[x].a,path[f].b=path[y].b,即类似传递关系,x从1循环至3,y从1循环至3,结果:x=1,y=2,生成path[4]=4 3;x=2,y=3,生成path[5]=2 5问题是新生成的项要再次加入整个数组进行全部遍历,然后再生成新的项再添加到数组里,求算法,谢谢我写的有问题的算法
issadd:=false; //issadd判断是否把当前值保存进数组
x:=1;
if isadd=true then y:=pathnum;
repeat
{y:=1
repeat
{
if path[x].b=path[y].a then
{
isadd:=true;
如果不满足条件则isadd:=false;
如果isadd=true then pathnum:=pathnum+1;//如果插入的话就把数组有效单元个数+1,否则就不加,下一次循环到决定插入时自动冲掉原来的值
}
y:=y+1;
}
until y>pathnum
x:=x+1;
}
until x>pathnum
问题是当插入了一个path[m]之后,x继续递增,这是就漏掉了n小于x的path[n].b和path[m].a进行比较,请问该如何解决?谢谢,最好写出算法
1 4 2
2 2 3
3 3 5
有这样一对数组path,i可当作编号,每一横行可以当作一条记录path[i],若path[x].b=path[y].a那么可生成一个新的项path[f].a=path[x].a,path[f].b=path[y].b,即类似传递关系,x从1循环至3,y从1循环至3,结果:x=1,y=2,生成path[4]=4 3;x=2,y=3,生成path[5]=2 5问题是新生成的项要再次加入整个数组进行全部遍历,然后再生成新的项再添加到数组里,求算法,谢谢我写的有问题的算法
issadd:=false; //issadd判断是否把当前值保存进数组
x:=1;
if isadd=true then y:=pathnum;
repeat
{y:=1
repeat
{
if path[x].b=path[y].a then
{
isadd:=true;
如果不满足条件则isadd:=false;
如果isadd=true then pathnum:=pathnum+1;//如果插入的话就把数组有效单元个数+1,否则就不加,下一次循环到决定插入时自动冲掉原来的值
}
y:=y+1;
}
until y>pathnum
x:=x+1;
}
until x>pathnum
问题是当插入了一个path[m]之后,x继续递增,这是就漏掉了n小于x的path[n].b和path[m].a进行比较,请问该如何解决?谢谢,最好写出算法
解决方案 »
- 求个打开文件夹并选中指定的文件
- 新手问一个弱智问题
- a varibale problem ! help
- DSPack安装后出错
- 请问使用ListView控件的问题,我现在有jpg,bmp,png,三个图片,我想显示在ListView中.我的说明如下,请帮助.
- 如何调用选择目录界面?请教高手!
- 如何让本地连接到远程的SQLSERVER服务器,在线等待
- 急:请问用ado对SQL Server时间变量赋值怎样能把毫秒输入进去?
- 提示Class tbutton not found ??为什么呢?
- 如何在DELPHI中同一个表单中写一次就可控制回车键?
- 子母窗体的问题?
- 菜菜提问:哪位老大帮我把这段c代码翻译成delphi?
求整个图的连通关系
可以这样
先扫一遍记下a,b有多少种不同的取值(图有多少个顶点)同时建立图(用邻接链表好了)
再对每个顶点出发作一次遍历
如对1这个顶点可以遍历到2、3、5
那就记下
(1,2)
(1,3)
(1,5)
....程序不难写 我就不写了