首先介绍一下,什么叫做最X问题。
比如一个人走在一条十字路口,然后走过一条十字路口后又遇见了一条十字路口,如此循环,在知道了走过十字路口的个数以及每条路线的长度后,求解从起点到终点最短(X)路径。
可以参考蚂蚁爬楼梯 :蚂蚁爬楼梯代码
#include<iostream>
using namespace std;
int M=1001;
int n;
int a[M][M];
int func()
{
int i,j;
for(i=n-1;i>=1;i--)//从底部开始(自底向上)
for(j=1;j<=i;j++)
{
if(a[i+1][j]>a[i+1][j+1])//此部分想象不到的话,可以画出二维数组帮助理解
a[i][j]+=a[i+1][j];
else a[i][j]+=a[i+1][j+1];
}
return a[1][1];//该项一直被覆盖
}
int main(){
int i,j,max;
cin>>n;
n+=n
for(i=1;i<=n;i++)
for(j=1;j<=i;j++)
cin>>a[i][j];
cout<<func()<<endl;
return 0;
}