HDU 2084 数塔 简单DP
这题是一水题,只需从第一层一直往下面找子树中较大的那一个就可以了,很快水了,不过用codeblocks编得郁闷,codeblocks上编译都过不了,直接提交就水了
#include<stdio.h> int n,inf = 0x7fffffff,des[10000],num[10000]; int cal( int sum,int i,int j ) { if( num[sum + j] == inf ) return 0; if( des[sum + j] ) return num[sum + j]; des[sum + j] = 1; if( j > i ) { sum += i; ++i; j = 1; } return num[sum + j] += ( cal(sum + i,i + 1, j) > cal(sum + i,i + 1,j + 1) ? cal(sum + i,i + 1, j) :cal(sum + i,i + 1,j + 1)); } int main( ) { int t; scanf( "%d",&t ); while( t-- ) { scanf( "%d",&n ); for( int i = 0; i <= 6000; ++i ) num[i] = inf,des[i] = 0; for( int i = 1,sum = 0; i <= n; sum += i,++i ) for( int j = 1; j <= i; ++j ) scanf( "%d",&num[j+sum] ); int res = cal( 0,1,1 ); printf( "%d\n",res ); } return 0; }
本人还是新手 ,转载请注明来自Lvsi‘s home