原题:数塔
这个是动态规划入门题,比较简单。
题意是:
一个数字组成的三角形,从上到下找一条路径,使这条路径上数字之和最大。

解题思路,就是要从下往上看。举个例子:
如果你从上到下走到了第4行第1个数,也就是2,那么接下来有两个数可以走19和7,而你必然会选择19。<??http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+y/nS1L7Nv8nS1Lj5vt3V4rj2y7zCt7j80MLJz8Pm0rvQ0LXEyv2ho7DRMrj80MKzyTImIzQzOzE5PTIxoaMxOLj80MKzyTE4JiM0MzsxMD0yOCw5uPzQwrPJOSYjNDM7MTA9MTksNbj80MKzyTUmIzQzOzE2PTIxPC9wPgo8cD7W2Li0yc/D5rXEy7zCt9fuuvO12tK70NDA27zTs/bAtLXEvs3Kx9futPMmIzIwNTQwO8HLoaM8L3A+CjxwPsu8wre63LzytaWjrNfuvPK1pbXEyrXP1r7NysfE49Kyv6rSu7j2tv7OrMr91+nIpbTmtKK2r7npuf2zzLXEJiMyMDU0MDuho7Wryse/1bzk09DTxbuvtcTT4LXYo6y+zcrHsrvQwr+qyv3X6aOsyrnTw9Styv3X6bXE1+6689K70NDAtLGjtObK/b7do6zS8s6qztLDx8O/tM7Wu9Do0qrSu9DQtcTK/b7do6zWu9KqsNHA27zTtcTH6b/20rvWsdf308PU2tfuuvPSu9DQyc+jrL7N0NDBy6GjxMfDtNfuuvPSu9DQtcS12tK7uPbK/b7NysfX7rTzJiMyMDU0MDuhozxicj4KPC9wPgo8cD48YnI+CjwvcD4KPHA+PC9wPgo8cHJlIGNsYXNzPQ=="brush:java;">#include
int main() { int c,n,num[100][100]; scanf("%d",&c); while(c--) { int i,j; scanf("%d",&n); for(i=0;i
=0;i--) for(j=0;j<=i;j++) { if(num[i][j]+num[n-1][j]>num[i][j]+num[n-1][j+1]) num[n-1][j]=num[i][j]+num[n-1][j]; else num[n-1][j]=num[i][j]+num[n-1][j+1]; } printf("%d\n",num[n-1][0]); } return 0; }