关于最少费用购物问题,有几段程序看不懂,希望能给我解释一下红色代码的作用?
#include<string.h>
#define maxb 6 //所购商品种类数(0<=B<=5)
#define maxs 100//优惠商品种类数(0<=S<=99)
int purch[maxb][2];//存放预购商品数据
int offer[maxs][maxb];//存放优惠商品价数据
int product[maxb];
int num[1000];
int cost[maxb][maxb][maxb][maxb][maxb];
int b,s;//b件商品,s种组合
//初始化
void init()
{
int i,j,k;
int code,t,p;//code表编号,t表示优惠商品组合
memset(offer,0,sizeof(offer));
memset(purch,0,sizeof(purch));
memset(product,0,sizeof(product));
printf("请输入商品件数:");
scanf("%d",&b);
for(i=1;i<=b;i++)
{
scanf("%d %d %d",&code,&purch[i][0],&purch[i][1]);//code表示商品的编码;存放购买该种商品的总数;该商品的正常单价
num[code]=i;//商品的编号num[2]=1,num[8]=2
}
printf("请输入优惠组合数目:");
scanf("%d",&s);
for(i=1;i<=s;i++)
{
scanf("%d",&t);
for(j=1;j<=t;j++)
{
scanf("%d %d",&code,&p);
offer[i][num[code]]=p;//第i种优惠组合中编号为code的商品的数量
}
scanf("%d",&offer[i][0]);//利用0下标存第i种优惠组合的总价格
}
}
void mincost()
{
int i,min;
int A,B,C,D,E;
min=0;
for(i=1;i<=b;i++)
{
min=min+(product[i]*purch[i][1]);//正常单价购买
}
//遍历S种优惠组合
for(i=1;i<=s;i++)
{ //五种产品减去采用优惠组合的数量
A=product[1]-offer[i][1];
B=product[2]-offer[i][2];
C=product[3]-offer[i][3];
D=product[4]-offer[i][4];
E=product[5]-offer[i][5];
if(A>=0&&B>=0&&C>=0&&D>=0&&E>=0&&min>(cost[A][B][C][D][E]+offer[i][0]))
{
min=cost[A][B][C][D][E]+offer[i][0];
}
}
cost[product[1]][product[2]][product[3]][product[4]][product[5]]=min;
}
void dp(int i)
{
int j;
if(i>b){
mincost();
return;
}
for(j=0;j<=purch[i][0];j++)
{
product[i]=j;
dp(i+1);
}
}
int main(int argc, char *argv[])
{
int A,B,C,D,E;
init();
dp(1);
A=purch[1][0];
B=purch[2][0];
C=purch[3][0];
D=purch[4][0];
E=purch[5][0];
printf("%d\n",cost[A][B][C][D][E]);
return 0;
}
相关推荐
研发流程后端开发工具,提示功能开发效率
后端开发工具
Screenshot_2026-11-03-16-23-09-34.jpg
Screenshot_2026-11-03-16-23-09-34.jpg
机器人具有扰动抑制功能的有限时间基于方位角的领航者-跟随者编队控制(Matlab代码实现)
内容概要:本文档标题为《Plecs全桥LLC谐振变换器仿真模型.txt》,但实际内容并未涉及该主题的具体技术细节或仿真建模过程。相反,文档实质是一份由科研服务团队发布的跨学科资源目录,集中展示了大量基于Matlab、Simulink、Python、PSCAD等平台实现的科研项目与算法开发案例,涵盖电力系统、无人机路径规划、微电网优化、状态估计、信号处理、车间调度、图像处理、通信技术、雷达追踪、智能优化算法等多个工程技术领域。每个条目以“【】”标注研究主题,并注明“Matlab代码实现”“Python代码实现”等形式,表明其为可提供技术支持与代码资源的服务项目。文档末尾频繁出现“完整资源下载:公众号——荔枝科研社”及百度网盘链接,明确体现出其作为科研辅助服务推广与引流工具的功能属性。; 适合人群:面向电气工程、自动化、控制科学与工程、计算机科学、智能制造、新能源、航空航天、通信工程及相关交叉学科的研究生、高校教师、科研人员及企业研发工程师。; 使用场景及目标:①为科研人员提供课题选题、技术路线设计与算法实现的参考范例;②辅助学生或研究人员完成课程设计、毕业论文、项目仿真与算法复现任务;③作为第三方技术服务团队的能力展示目录,便于潜在客户快速了解其在多领域提供的定制化仿真与算法开发服务范围。; 阅读建议:此文档并非传统意义上的学术论文或技术教程,而是一份高度碎片化、广告性质浓厚的资源索引清单。读者应忽略其误导性的文件名,将其视为一个综合性科研技术服务目录,重点关注自身研究方向相关的条目,并通过文末提供的公众号或网盘链接进一步获取具体代码与资料。同时,需注意甄别资源的技术质量、原创性与适用性,避免盲目依赖外部服务。
科技中介服务机构如何打造高效、可复制的技术交易服务流程?.docx
科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。
高校技术转移办公室人员如何提升科研成果的市场推广与转化成功率?.docx
科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。



