| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 492 人关注过本帖
标题:语法有一个字母错误,哪位兄台给看一下把.有详细介绍
取消只看楼主 加入收藏
yaoguai2005
Rank: 1
等 级:新手上路
帖 子:168
专家分:0
注 册:2005-9-11
收藏
 问题点数:0 回复次数:1 
语法有一个字母错误,哪位兄台给看一下把.有详细介绍
#include"stdio.h" #define MAX_LEN 10000 #define n 6 int len; //当前走过的犁镜的权值和 int min;//当前找到的最短路径的和 int k;//当前最短的步数 int c[n];//最短路 //递归子过程,从X到Y,总步数为Z void fd(int*gr,int x,int y,int z,int*a,bool*b) //这句里bool*b中间的*号被提示错误.错误提示是说:说明语法错误.而且只有*号变成兰色,bool和b都好好的,在*号的下面有一道蓝线提示*号错误,请大家指点这个*号到底错在啥地方了\如何修改呢这个语句,这个程序里就这一个错误了,还请大家指点.这是个求最短路径的小程序,我找了半个月才找见的.谢谢 { int f,j; for(f=0;f<n;f++){ //让F从0到N-1寻找邻结点 if(gr[x*n+f]>0&&b[f]==false){ //判断是否F点在X邻域并且F点没有走过 a[z]=f; //走到F点(F点进栈) b[f]=true; //记录F点已经走过 len=len+gr[x*n+f]; //在当前路径长度中增加新边长 if(f!=y) //如果没有走道Y点就继续走 fd(gr,f,y,z+1,a,b); else if(len<min){//走到Y就看当前长度是否比当前最小长度小,如果当前小就更新 k=z;//先记录下当前犁镜的点数 min=len;//以当前长度作为当前最小长度 for(j=1;j<k+1;j++)//依次更换当前最短路径中的每个点 c[j]=a[j]; }//结束更新 len=len-gr[x*n+f];//退掉F点,先在当前路径长度中减去退出的一条边长 b[f]=false;//把F点恢复为没有走过 }//结束X邻域的搜索 } } //在N个点的网上求X到Y的最短路径,关联距阵是GR void shortest(int*gr,int x,int y,int*a,bool*b) { int i; min=MAX_LEN; for(i=0;i<n;i++) b[i]=false; a[0]=x; b[x]=true; len=0; fd(gr,x,y,1,a,b); for(i=0;i<k+1;i++) printf("%d,",c[i]); printf("\n"); printf("the shortest length is %d.\n",min); } void main() { int gr[n][n]={{0,1,2,0,0,0}, {1,0,1,3,1,0}, {2,1,0,0,0,12}, {0,3,0,0,1,0}, {0,1,0,1,0,8}, {0,0,12,0,8,0}}; int a[n]; bool b[n]; shortest((int*)gr,0,5,a,b); }

[此贴子已经被作者于2005-9-12 0:29:45编辑过]

搜索更多相关主题的帖子: 语法 字母 
2005-09-11 18:05
yaoguai2005
Rank: 1
等 级:新手上路
帖 子:168
专家分:0
注 册:2005-9-11
收藏
得分:0 
不好意思,原代码都是小写的b.测试的时候也是小写的,我把它们都改过来了
应该是定义把,我是刚学路径计算的,这是一个教科书的程序,所以我也不知道是啥意思,
但是我急需要用,可上机的时候,出现这样的错误,还请斑主指点呀,到底错在哪里了呀

2005-09-12 00:34
快速回复:语法有一个字母错误,哪位兄台给看一下把.有详细介绍
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026946 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved