现在的位置: 首页 > 综合 > 正文

Sicily 1146. 采药

2014年09月05日 ⁄ 综合 ⁄ 共 384字 ⁄ 字号 评论关闭

经典背包问题

#include<iostream>
#include<cstdio>

using namespace std;

#define MAXN 100 + 10
#define MAXT 1000 + 10
int d[MAXN][MAXT];

int main() 
{
  int n, C,time,value;
  scanf("%d%d",&C,&n);
  for(int i = 1; i <= n ; ++i)
  {
      scanf("%d%d",&time,&value);
      for(int j = 0; j <= C; j++) 
	  {
          d[i][j] = (i==1 ? 0 : d[i-1][j]);
          if(j >= time) d[i][j] = d[i][j] >= d[i-1][j-time]+value? d[i][j]:d[i-1][j-time]+value;
	  }
  }
  printf("%d\n", d[n][C]);
  //system ("pause");
  return 0;
}

抱歉!评论已关闭.