原来错误思路:
开始想的是从第二行选取最大的,然后顺次选取最大的,但是忽略了未被选的小的数后面也可能出现更大的数;然后我又选择从最后一行往前加,结果还是犯了同样的错误。
原因:不会递归,不明白递归是如何让操作的
正确思路
采取递归的方法,分析的时候是从前往后分析,当选择一个数的时候,要看这个数加到最后是不是最大的数值和;当计算每一个路径的时候,从后往前计算,递归?先暂时写上自己的思路吧,以后做到更多的题还会来总结:1.先写边界2.由于是计算出每个数的可能路径的数字和,所以要有两层循环,一层控制行数,一层控制每个数的路径和,比较完大小后存取每个数的路径和
关键代码
for(i=1;i<=n;i++)
{
a[n][i]=b[n][i];//存取边界,递归出口
}
for(i=n-1;i>=1;i--)
{
for(j=1