[ CodeVS冲杯之路 ] P1014
不充钱,你怎么AC?
题目:http://codevs.cn/problem/1014/
一道不用考虑价值的DP题,那么我们可以用 0 和 1 表示是否能够达到该步骤
1 #include<cstdio> 2 #include<cstdlib> 3 #include<cstring> 4 #include<cmath> 5 #include<iostream> 6 #include<algorithm> 7 using namespace std; 8 9 int v,n,a[31]; 10 bool f[31][20001]; 11 int main() 12 { 13 int i,j,ans=0; 14 scanf("%d%d",&v,&n); 15 for (i=1;i<=n;i++) scanf("%d",&a[i]); 16 for (j=1;j<=v;j++) f[0][j]=0; 17 f[0][0]=1; 18 for (i=1;i<=n;i++) 19 { 20 for (j=0;j<=v;j++) 21 { 22 f[i][j]=f[i-1][j]; 23 if (!f[i][j]&&j-a[i]>=0) f[i][j]=f[i-1][j-a[i]]&1; 24 if (f[i][j]) ans=max(ans,j); 25 } 26 } 27 printf("%d\n",v-ans); 28 return 0; 29 }