#include <stdio.h> long max; int n; //int visit[310]={0}; long time[310]={0}; long v[310]={0}; int go(int i,int c,int value) { if(i==n||c==0) { if(value>max) { max=value; } return 1; } else { if(time[i]<=c) { //visit[i]=1; go(i+1,c-time[i],value+v[i]); //visit[i]=0; } go(i+1,c,value); } } int main() { int m; scanf("%d%d",&n,&m); for(int i=0;i<n;i++) { scanf("%ld%ld",&time[i],&v[i]); } max=v[0]; go(0,m,0); printf("%ld\n",max); } |
Double click to view unformatted code.