poj1163 简单DP

来源:互联网 发布:在知乎回答问题 编辑:程序博客网 时间:2024/04/27 16:47

思路:
简单DP。

#include <iostream>#include <string>#include <vector>#include <set>#include <map>#include <queue>#include <algorithm>#include <fstream>#include <cmath>#include <cstring>#include <limits.h>#define Long long long#define uint unsigned int#define N#define mod 1000000007#define inf 100000000#define eps 1e-10#define For(i,l,r) for(int i=l;i<=r;i++)#define Dor(i,r,l) for(int i=r;i>=l;i--)using namespace std;ifstream in("/Users/urey/data/input.txt");//_________________________________________________________________________________int n;int data[101][101], record[101][101];int dfs(int layer, int i) {    if(layer == n) {        return data[layer][i];    }    int left = 0, right = 0;    if(record[layer][i] == 0) {        left = data[layer][i] + dfs(layer + 1, i);        right = data[layer][i] + dfs(layer + 1, i + 1);        record[layer][i] = max(left, right);    }    return record[layer][i];}int main(int argc, const char * argv[]) {    in>>n;    for(int i = 1; i <= n; ++i) {        for(int j = 1; j <= i; ++j) {            in>>data[i][j];        }    }    memset(record, 0, sizeof(record));    int sum = dfs(1, 1);    cout<<sum<<endl;    return 0;}
0 0
原创粉丝点击