C语言数据塔问题:求最大路径和与路径输出
#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/n70t 著作权归作者所有。请勿转载和采集!