以下是改正后的代码:

#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;
#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

原文地址: https://www.cveoy.top/t/topic/ffVX 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录