HDU 2602
来源:互联网 发布:透视手机照相机软件 编辑:程序博客网 时间:2024/06/02 10:29
思路:简单的动态规划,0-1背包问题
#include<stdio.h>#include<string.h>int a[1001][1001],va[1001],vo[1001];int max(int x, int y){ return x>y?x:y;}int main(){ int T,i,j,n,v; scanf("%d",&T); while(T--) { memset(a,0,sizeof(a)); scanf("%d%d",&n,&v); for(i = 0;i < n;i ++) scanf("%d",&va[i]); for(i = 0;i < n;i ++) scanf("%d",&vo[i]); for(i = 0;i <= v;i ++) { for(j = 0;j < n;j ++) { if(i>=vo[j]) a[i][j] = max(a[i][j-1],a[i-vo[j]][j-1]+va[j]); else a[i][j] = a[i][j-1]; } } printf("%d\n",a[v][n-1]); }}
#include<stdio.h>#include<string.h>int a[1001],va[1001],vo[1001];int max(int x, int y){ return x>y?x:y;}int main(){ int T,i,j,n,v; scanf("%d",&T); while(T--) { memset(a,0,sizeof(a)); scanf("%d%d",&n,&v); for(i = 1;i <= n;i ++) scanf("%d",&va[i]); for(i = 1;i <= n;i ++) scanf("%d",&vo[i]); for(i = 1;i <= n;i ++) { for(j = v;j >= 0;j --) { if(j>=vo[i]) a[j] = max(a[j],a[j-vo[i]]+va[i]); else a[j] = a[j]; } } printf("%d\n",a[v]); }}
0 0
- HDU 2602
- HDU 2602
- HDU 2602
- HDU 2602
- hdu 2602
- hdu 2602
- hdu 2602
- HDU 2602
- HDU 2602
- hdu 2602
- HDU 2602
- hdu 2602
- HDU 2602
- HDU 2602
- HDU 2602
- HDU 2602
- hdu 2602
- HDU 2602
- HDU 1257
- HDU 1878
- HDU 1097
- 学习zigbee入门-9
- HDU 2546
- HDU 2602
- HDU 2191
- HDU 1028
- HDU 1029
- HDU 1102
- 大学感想
- HDU 1049
- HDU 2571
- Codeforces 201(DIV2)B