NYOJ-106 简单背包问题
首先观察题目,n表示输入数据的个数,s表示物品个数,m表示背包容重量,v表示物品单位重量的价值,w表示单个物品的总重量,物品可以分割,并且每个物品只可以拿一次,要求输出在满足包容重量的前提下包内物品价值和的最大值
分析:定义一个表示物品的结构体,属性有单位价值和重量,将每个物品按照单位价值来进行排序,要满足价值和最大的条件的话,那我们的背包就要先从单位价值最大的开始装起,直到背包满
代码如下:
1 #include<stdio.h> 2 struct articles 3 { 4 int v; 5 int w; 6 }f[11]; 7 int main() 8 { 9 int i,j,s,m,n,sum; 10 struct articles t; 11 scanf("%d",&n); 12 while(n--) 13 { 14 sum=0; 15 scanf("%d %d",&s,&m); 16 for(i=0;i<s;i++) 17 { 18 scanf("%d %d",&f[i].v,&f[i].w); 19 } 20 for(i=0;i<s;i++) 21 { 22 for(j=i+1;j<s;j++) 23 { 24 if(f[j].v>f[i].v) 25 { 26 t=f[j]; 27 f[j]=f[i]; 28 f[i]=t; 29 } 30 } 31 }//冒泡排序,按单价降序 32 for(i=0;i<s;i++) 33 { 34 if(m>=f[i].w) 35 { 36 sum=sum+f[i].v*f[i].w; 37 m=m-f[i].w; 38 }else 39 { 40 sum=sum+f[i].v*m 41 m=0; 42 break; 43 } 44 } 45 printf("%d\n",sum); 46 } 47 return 0; 48 }
心之所向,素履以往
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南