Lightoj 1004 DP

来源:互联网 发布:金融类的工作知乎 编辑:程序博客网 时间:2024/05/17 07:18

背包

AC代码如下:

#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;int main(){int T, Case = 1, N;int number[210][210];int dp[210][210];cin >> T;while( T-- ){cin >> N;memset( number, 0, sizeof( number ) );memset( dp, 0, sizeof( dp ) );for( int i = 1; i <= N; i++ ){for( int j = 1; j <= i; j++ ){cin >> number[i][j];}}for( int i = N + 1; i <= 2 * N - 1; i++ ){for( int j = 1; j <= 2 * N - i; j++ ){cin >> number[i][j];}}for( int i = 1; i <= N; i++ ){for( int j = 1; j <= N; j++ ){dp[i][j] = max( dp[i-1][j] + number[i][j], dp[i-1][j-1] + number[i][j] );}}for( int i = N + 1; i <= 2 * N - 1; i++ ){for( int j = 1; j <= N; j++ ){dp[i][j] = max( dp[i-1][j] + number[i][j], dp[i-1][j+1] + number[i][j] );}}cout << "Case " << Case++ << ": " << dp[2*N-1][1] << endl;}return 0;}