diff --git a/POJ/1276_libin56842.cpp b/POJ/1276_libin56842.cpp new file mode 100644 index 0000000..42695db --- /dev/null +++ b/POJ/1276_libin56842.cpp @@ -0,0 +1,55 @@ +#include +#include +#include +using namespace std; + +struct node +{ + int n,v; +} a[20]; + +int dp[100010]; + +int main() +{ + int sum,n,i,j,k; + while(~scanf("%d%d",&sum,&n)) + { + for(i = 1; i<=n; i++) + scanf("%d%d",&a[i].n,&a[i].v); + if(!sum) + { + printf("0\n"); + continue; + } + if(!n) + { + printf("0\n"); + continue; + } + memset(dp,0,sizeof(dp)); + dp[0] = 1; + int MAX = 0,tem; + for(i = 1; i<=n; i++) + { + for(j = MAX;j>=0;j--) + { + if(dp[j]) + { + for(k = 1;k<=a[i].n;k++) + { + tem = j+k*a[i].v; + if(tem>sum) + continue; + dp[tem] = 1; + if(tem>MAX) + MAX = tem; + } + } + } + } + printf("%d\n",MAX); + } + + return 0; +}