POJ 3176.Cow Bowling

来源:互联网 发布:51单片机蜂鸣器程序 编辑:程序博客网 时间:2024/06/11 08:20

题目:http://poj.org/problem?id=3176

AC代码(C++):

#include <iostream>#include <algorithm>#include <stdio.h>#include <vector>#include <queue>#include <math.h>#include <string>#include <string.h>#include <bitset>#define INF 0xfffffff#define MAXN 100105using namespace std;int n;int num[400][400];int dp[400][400];int main(){scanf("%d",&n);for(int i = 1; i <= n; i++){for(int j = 1; j <= i; j++){scanf("%d",&num[i][j]);}}memset(dp,0,sizeof(dp));int MAX = 0;for(int i = 1; i <= n; i++){for(int j = 1; j <= n+1-i; j++){dp[i][j] = max(dp[i-1][j]+num[i+j-1][j],dp[i][j-1]+num[i+j-1][j]);if(i+j-1==n&&dp[i][j]>MAX)MAX = dp[i][j];}}cout<<MAX;}
总结: 动态规划. dp[i][j]代表往左走i-1步和往右走j-1步时最大sum.

原创粉丝点击