#2
w的平方2023-09-01 21:34
|
程序代码:
#include<stdio.h>
#include<math.h>
int map[100][100]={0};
int stack[120],v[100]={0},top=0,m,n,start,end,L[100],Length=0;
void dfs(int pos)
{
int i;
if(pos==end){
for(i=0;i<top;i++)
printf("%d ",stack[i]);
printf("%d\n",end);
for(i=0;i<top;i++)
Length=L[stack[i]]+Length;
printf("%d\n",Length);
return;
}
v[pos]=1;
stack[top++]=pos;
for(i=1;i<=n;i++){
if(!v[i]&&map[pos][i])
dfs(i);
}
v[pos]=0;
top--;
}
int main()
{
int i,x,y,z;
printf("分别输入顶点数n和路径数m:");
scanf("%d %d",&n,&m);//n是顶点数,m是边数
printf("输入m条路径及长度:");
for(i=1; i<=m; i++) {
scanf("%d %d %d", &x,&y,&z);
L[i]=z;
map[x][y] = 1;
map[y][x] = 1;//无向图
}
printf("输入起始点和终点:");
scanf("%d %d", &start,&end);
printf("\n程序执行结果为:\n");
dfs(start);
return 0;}
#include<math.h>
int map[100][100]={0};
int stack[120],v[100]={0},top=0,m,n,start,end,L[100],Length=0;
void dfs(int pos)
{
int i;
if(pos==end){
for(i=0;i<top;i++)
printf("%d ",stack[i]);
printf("%d\n",end);
for(i=0;i<top;i++)
Length=L[stack[i]]+Length;
printf("%d\n",Length);
return;
}
v[pos]=1;
stack[top++]=pos;
for(i=1;i<=n;i++){
if(!v[i]&&map[pos][i])
dfs(i);
}
v[pos]=0;
top--;
}
int main()
{
int i,x,y,z;
printf("分别输入顶点数n和路径数m:");
scanf("%d %d",&n,&m);//n是顶点数,m是边数
printf("输入m条路径及长度:");
for(i=1; i<=m; i++) {
scanf("%d %d %d", &x,&y,&z);
L[i]=z;
map[x][y] = 1;
map[y][x] = 1;//无向图
}
printf("输入起始点和终点:");
scanf("%d %d", &start,&end);
printf("\n程序执行结果为:\n");
dfs(start);
return 0;}
不知道该怎么改求路径和?想得出每个路径的总长度,知道L[]的代码有问题,不知道怎么改?