1157:LITTLE SHOP OF FLOWERS

問題文
http://poj.org/problem?id=1157


http://wikiwiki.jp/pku/?1157%20LITTLE%20SHOP%20OF%20FLOWERS



































メモ化再帰した。

#include<iostream>
#include<algorithm>
#define INF (1<<29)

using namespace std;

int h,w,v[102][102],memo[102][102];

int rec(int a,int b){

  if(a==h)return 0;
  if(b==w)return -INF;
  if(memo[a][b]<INF)return memo[a][b];

  int res=-INF;
  for(int i=b+1;i<=w;i++)
    res=max(res,rec(a+1,i));

  return memo[a][b]=res+v[a][b];
}

int main(void){

  cin >> h >> w;
  for(int i=0;i<h;i++)
    for(int j=0;j<w;j++)cin >> v[i][j];

  fill(memo[0],memo[102],INF);

  int ans=-INF;
  for(int i=0;i<w;i++)ans=max(ans,rec(0,i));

  cout << ans << endl;

  return 0;
}