问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

一个关于算法的问题。 应该是要用到动态规划。 答对有加分。

发布网友 发布时间:2024-07-21 03:38

我来回答

3个回答

热心网友 时间:2024-07-21 03:49

二维费用背包问题。
我们把n个数看做物品,把值a[i]赋予两重含义:重量和价值。即第i个物品的重量为a[i],价值为a[i]。
设f[i][v][u]表示前i个物品中选取v个物品重量为u时的最大价值。则,状态转移方程为
f[i][v][u]=max{f[i-1][v][u],f[i-1][v-1][u-a[i]]+a[i]}
v,u的最大容量分别是个数最大容量x,重量最大容量m。
然后就是裸的模版题了。
贴个我写的代码给你吧~
输入:第一行一个整数n。第二行n个整数,表示a[i]。第三行一个整数x。第四行一个整数m。
样例:
5
1 2 3 4 5
3
8
code:
#include <stdio.h>
#include <string.h>
#define maxn 102
#define maxx 102
#define maxm 102
#define oo 0x3f3f3f3f;
int main()
{
int i=0,j=0,k=0;
int n=0,m=0,x=0;
int a[maxn],dp[maxx][maxm];
bool s[maxn][maxx][maxm];
while(scanf("%d",&n) != EOF)
{
for(i=0;i<n; i++)scanf("%d",&a[i]);
scanf("%d",&x);
scanf("%d",&m);
memset(dp,0,sizeof(dp));
memset(s,0,sizeof(s));
//恰好取x个数,初始化为负无穷
//若需要求至多x个数,则初始化为0
for(j=x;j>=1;--j)
for(k=m;k>=0;k--)
dp[j][k]=-oo;
//DP求解
for(i=0;i<n;++i)
for(j=x;j>=1;--j)
for(k=m;k>=a[i];--k)
if(dp[j][k]<dp[j-1][k-a[i]]+a[i])
{
dp[j][k]=dp[j-1][k-a[i]]+a[i];
s[i][j][k]=true;
}
//方案不存在时
if(dp[x][m]<0)
{
printf("NO SOLUTION.\n");
continue;
}
//输出方案
printf("A POSSIBLE SOLUTION:");
bool plus=false;
for(i=n-1,j=x,k=m;i>=0;--i)
{
if(s[i][j][k])
{
if(plus)putchar('+');
else plus=true;
printf("%d",a[i]);
--j;
k-=a[i];
}
}
//输出和
printf("=%d\n",dp[x][m]);
}
return 0;
}

热心网友 时间:2024-07-21 03:49

01背包问题,具体百度“背包九讲”,acm大神写的。

热心网友 时间:2024-07-21 03:51

这个问题来自哪里啊,挺有意思的。
想到一个思路,不过不是用动态规划,我把她叫做《可行逐次逼近法》吧,想法如下:
1、数据结构
a[n]、pailie_a[n]、
2、思路
(1)获得初始次优可行解n
①将a[n]从小到大排列,排列后仍然存储在a[n]中,a[1]储存最小值,a[n]储存最大值;
②将重新排列后,各元素初始时的位置序号存在pailie_a[n]中,如最小的数,重排后储存在a[1]中,原始状态储存在a[k]中,则pailie_a[1]=k;
③判断有无可行解:
将a[n]的前x个最小值,取出来,存在solve[x]中,计算sum(solve[x]),if超过给定的,无可行解;
否则,有可行解,并且此时的solve[x]即为初始次优可行解,将a[n]中剩余元素存在qita[n-x]中备用;
(2)逐次逼近最优解:
依次:用qita[n-x]中的一个元素替换掉solve[x]中的一个元素;
直至:满足停止准则:用qita[n-x]中的任何一个元素替换掉solve[x]中的任何一个元素都不会使结果更优。
………未完待续………
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
防静电手腕带简介 QQ管家的金币换礼品是骗人的吧,让输入验证码的时候礼品已经没了._百 ... 安全金币换礼包是真的嘛 电脑管家礼包是骗局? 管家里面用金币兑换实物,为什么我每次兑换都提示已兑换 电脑管家金币兑换礼包是正的吗? 中译英: 这件衬衫和你的裤子很配 我母亲今年79岁,九月份身体不适,B超和肝功检查,结果怀疑是有东西占位... 半永久眉毛二次补色后需要买修复剂吗 左边一个革,右边一个斥去掉点是什么字 我眼皮里有异物,靠近眼睫毛,不痛不痒,就是有时难受,请问是什么回事_百 ... 当茶水中融进了禅意 夸茶好的句子,形容茶好喝的有文化的段子(幽默而唯美) 茶店名字大全 有创意390个,简单大气的茶店名字 当茶水中融进了信仰文化 扬州茶叶有哪些品牌,扬州卖茶叶的老字号 为什么我电脑玩以撒的结合重生会走的很慢但不卡,好像玩,求解 为什么笔记本玩以撒会卡?明明玩大型游戏都不卡的? 乙肝表面抗原和乙肝核心抗体呈阳性吃什么药 鹰潭个体工商户简易注销的流程是什么 鹰潭的公司注销了的营业执照名字还可以注册吗 什么店名好听又招财,旺生意的店铺名字免费 思念牵挂的相思情怀 古风句子含笙歌 今天有你作文 担保公司的用处是什么? 担保公司的作用是怎样的 担保公司的作用以及担保模式是什么 合同到期后公司不续约有赔偿吗? 我家牡丹鹦鹉额头和嘴巴那边有很烫,有时候喜欢蓬毛看起来也没精神。 请... 怎么让电脑记住自己的网址? 如何保存网页一键重装系统 重装系统前怎么保存浏览网址 三十而立的生日文案 30岁生日文案高级 蛋糕裱花生日蛋糕类 ...需要符合哪些条件。还有,还能凭什么职称的? 被一个网友骗钱 知道他经营的淘宝店, 警察可以通过他开的淘宝店查他注 ... 怎样在QQ邮箱设置默认浏览器? 去屑小妙招 佛山市风行家电有限公司怎么样? 冰柜的压缩机怎样启动不工作了? 如何判断冰柜压缩机是否坏了? 投影机电脑有线电视连接 请问电脑怎么样连接到投影仪? 生日快乐的古诗句子 原神堇庭华彩月章金句好做吗 原神堇庭华彩月章金句流程攻略 盘点各地特产美食小吃有哪些 宝安南路属于哪个街道 林达背负式风水灭火器青海有没有消消售店 小米电视怎么投屏观看(小米电视怎么用手机投屏) 表情包39是什么意思?