博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
NYOJ289 苹果
阅读量:6342 次
发布时间:2019-06-22

本文共 1035 字,大约阅读时间需要 3 分钟。

原先用的滚动数组,现在用基本的动态规划,结果调试了很多次,发现了原因,贴上改正后的代码:

1 #include 
2 #include
3 int v[1005],c[1005]; 4 int f[1005][1005]; 5 int max(int a,int b){ 6 if(a>b) return a; 7 return b; 8 } 9 int main()10 {11 int i,j,n,C;12 while(scanf("%d%d",&n,&C),n||C){13 memset(f,0,sizeof(f));14 for(i=1;i<=n;i++)15 scanf("%d%d",&c[i],&v[i]);16 for(i=1;i<=n;i++)17 for(j=0;j<=C;j++){ //也可以改为j从C到018 f[i][j]=f[i-1][j]; //忘记了当 j
=c[i])21 f[i][j]=max(f[i-1][j-c[i]]+v[i],f[i-1][j]);22 }23 printf("%d\n",f[n][C]);24 }25 return 0;26 }

滚动数组解法:

#include
int main(){ int i,j,n,v,c,w; while(scanf("%d%d",&n,&v)&&n||v) { int price[1001]={}; for(i=0;i
=c;j--) //滚动数组j必须从大到小递推 , //之所以这样是因为本次的 price[j] 需要从前一次的 price[j]得到 if(price[j]

 

转载于:https://www.cnblogs.com/shihuajie/archive/2013/04/26/3045764.html

你可能感兴趣的文章
【安全牛学习笔记】中间人***、ARP MITM、中间人***、Pass the Hash
查看>>
深入浅出:软件研发或嵌入式开发源代码如何加密?
查看>>
shell 获取ip地址
查看>>
mongodb的安装
查看>>
Windows 10 设置登录时不用 Microsoft 账户
查看>>
Spring事务的传播行为
查看>>
打包rpm包
查看>>
一起读经典《C Primer Plus(第6版)中文版》
查看>>
ssm框架启动报错
查看>>
我的友情链接
查看>>
java流关闭改进
查看>>
suse 11 rpm 安装gcc
查看>>
moip-ruby
查看>>
try
查看>>
Ansible自动化运维之YAML、基础元素
查看>>
MSSQL · 最佳实践 · 利用文件组实现冷热数据隔离备份方案
查看>>
前端开发--实战篇之测试框架
查看>>
eyoucm arclist 文档列表
查看>>
$(document).ready(function()
查看>>
Python学习之路——Linux基础之IP地址管理
查看>>