#includestdiohint DataTorwerint d1010int n int ijmaxAddnn=0pathnn=0; forj=0;jn;j++ maxAddi+1j=dn-1j; fori=n-2;i=0;i-- forj=0;j=i;j++ ifmaxAddi+1jmaxAddi+1j+1 maxAddij=dij+maxAddi+1j; pathij=j; els
以下是改正后的代码:
#include<stdio.h>
int DataTower(int d[10][10],int n) //函数名应该为DataTower,而不是DataTorwer { int i,j; int maxAdd[n][n]={0},path[n][n]={0}; //注意数组的定义应放在函数内部,且第二维应为n,而不是10
for(j=0;j<n;j++)
maxAdd[n-1][j]=d[n-1][j]; //将最后一行的值赋给maxAdd数组
for(i=n-2;i>=0;i--)
{
for(j=0;j<=i;j++)
{
if(maxAdd[i+1][j]>maxAdd[i+1][j+1])
{
maxAdd[i][j]=d[i][j]+maxAdd[i+1][j];
path[i][j]=j;
}
else
{
maxAdd[i][j]=d[i][j]+maxAdd[i+1][j+1];
path[i][j]=j+1;
}
}
}
printf("路径为:%d",d[0][0]);
j=path[0][0];
for(i=1;i<n;i++)
{
printf("-->%d",d[i][j]);
j=path[i][j];
}
return maxAdd[0][0];
}
int main() { int n,i,j; int d[10][10];
scanf("%d",&n);
for(i=0;i<n;i++)
{
for(j=0;j<=i;j++)
{
scanf("%d",&d[i][j]);
}
}
printf("%d",DataTower(d,n)); //调用函数DataTower并输出结果
return 0;
原文地址: https://www.cveoy.top/t/topic/ffVX 著作权归作者所有。请勿转载和采集!