loj 1004(dp)

题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=25830

思路:类似与数塔问题,自底向上处理,输入的时候稍微注意一下就可以了。

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
#define MAXN 222
#define FILL(a,b) memset(a,b,sizeof(a)) int g[MAXN][MAXN],dp[MAXN][MAXN];
int n; int main()
{
int _case,t=;
scanf("%d",&_case);
while(_case--){
scanf("%d",&n);
FILL(g,);
FILL(dp,);
for(int i=;i<=*n-;i++)
for(int j=;j<=*n-;j++){
if(i<=n&&j<=i)scanf("%d",&g[i][j]);
else if(i>n&&j<=*n-i)scanf("%d",&g[i][j]);
}
dp[*n-][]=g[*n-][];
for(int i=*n-;i>=;i--)
for(int j=;j<=*n-i;j++){
if(i>=n)dp[i][j]=max(dp[i+][j],dp[i+][j-])+g[i][j];
else dp[i][j]=max(dp[i+][j],dp[i+][j+])+g[i][j];
}
printf("Case %d: %d\n",t++,dp[][]);
}
return ;
}
上一篇:ORACLE-用户常用数据字典的查询使用方法


下一篇:java修饰符的作用范围