欢迎来到天天文库
浏览记录
ID:11684842
大小:134.00 KB
页数:7页
时间:2018-07-13
《与利润有关的背包问题》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、大学学院计算机程序训练任务书学生姓名:班级:学号:设计题目:《与利润有关的背包问题》一,题目:《与利润有关的背包问题》二,问题描述:输入N种货物重量wkg及获利p,输出各种货物及重量到文件。题目解释:一个商人带着一个能装mkg的背包去乡下收购货物,准备将这些货物卖到城里获利。现有n种货源,且知第i种货物有wikg,可获利pi元。请编写算法帮助商人收购货物,以获取最高的利润。三,系统设计说明:1.系统用到的数据类型程序设计一般由两部分组成:算法和数据结构,合理地选择和实现一个数据结构和处理这些数据结构具有同样
2、的重要性,在与利润有关的背包问题中,由于需要各种数据,所以需要定义各种数据的类型。主要包括如下:#include"stdio.h"#defineN30typedefstruct{intbh;floatm;floath;floatl;2、main()主函数程序采用函数调用的设计理念,主函数程序的入口,各调用函数均由主函数控制调用。控制功能的实现通过循环执行一个开关语句,该语句的条件值是通过调用主菜单得到的返回值(head),根据该值,调用相应的各功能函数。3.printf()输出函数直接利用输出函数print
3、f输出字符串,在屏幕上显示一个菜单。四,功能本程序功能是输入N种货物重量wkg及获利p,输出各种货物及重量到文件,通过C语言程序最终帮助商人获取最大利润1.N-S图:定义宏替换#defineN30定义一个结构体变量B,组成成员分别有bh,m,h,l,输入信息数组m的值for(i=0;i4、b[i].m输入背包的质量Xfor(i=o;i<=m-1;i++);for(j=i+1;j5、;b[j].l>b[i].lYNcent=b[i]b[i]=b[j]b[j]=centfor(n=0;;n++);(x-=b[n].m)<0YNBreakfor(i=0;i6、说明结构体可以用字母B代替,结构体中定义所需的变量类型。3.主函数中结构体Bb[N]定义各变量。4.以整型数据输入物品的种类,并在屏幕上自动显示出来,用一个for循环来控制程序中物品的种类数。5.输入每种货物的质量和所获利润,并计算他们的比,即h7、m6.输入背包的最大载重,并利用for循环使货物的最大质量不能超过背包的最大载重。7.if(b[j].l>b[i].l){cent=b[i];b[i]=b[j];b[j]=cent;使b[i]和b[j]的值互换以达到l降序排列的目的。8.if((x-=b[n].m8、)<0)break;使选择货物的质量不能超过背包的质量。9.最后利用语句y+=b[i].h;使利润进行累加,最终输出最大利润。六,源程序#include"stdio.h"#defineN30typedefstruct{intbh;intm;inth;floatl;}B;main(){Bb[N],cent;inti,a,j,n;intx,y=0;printf("要输入货物的种类数:");scanf("%d",&a);for(i=0;i9、物的质量m:",b[i].bh);scanf("%d",&b[i].m);printf("请输入第%d种货物获利h:",b[i].bh);scanf("%d",&b[i].h);b[i].l=b[i].h/b[i].m;}printf("输入背包最大载重x:");scanf("%d",&x);for(i=0;ib[i].l){cent=b[i];b[i]=b[j];b[j]=cent;}for(n=0;;n++)if((x-=b[n]10、.m)<0)break;printf("收购第:");for(i=0;i
4、b[i].m输入背包的质量Xfor(i=o;i<=m-1;i++);for(j=i+1;j5、;b[j].l>b[i].lYNcent=b[i]b[i]=b[j]b[j]=centfor(n=0;;n++);(x-=b[n].m)<0YNBreakfor(i=0;i6、说明结构体可以用字母B代替,结构体中定义所需的变量类型。3.主函数中结构体Bb[N]定义各变量。4.以整型数据输入物品的种类,并在屏幕上自动显示出来,用一个for循环来控制程序中物品的种类数。5.输入每种货物的质量和所获利润,并计算他们的比,即h7、m6.输入背包的最大载重,并利用for循环使货物的最大质量不能超过背包的最大载重。7.if(b[j].l>b[i].l){cent=b[i];b[i]=b[j];b[j]=cent;使b[i]和b[j]的值互换以达到l降序排列的目的。8.if((x-=b[n].m8、)<0)break;使选择货物的质量不能超过背包的质量。9.最后利用语句y+=b[i].h;使利润进行累加,最终输出最大利润。六,源程序#include"stdio.h"#defineN30typedefstruct{intbh;intm;inth;floatl;}B;main(){Bb[N],cent;inti,a,j,n;intx,y=0;printf("要输入货物的种类数:");scanf("%d",&a);for(i=0;i9、物的质量m:",b[i].bh);scanf("%d",&b[i].m);printf("请输入第%d种货物获利h:",b[i].bh);scanf("%d",&b[i].h);b[i].l=b[i].h/b[i].m;}printf("输入背包最大载重x:");scanf("%d",&x);for(i=0;ib[i].l){cent=b[i];b[i]=b[j];b[j]=cent;}for(n=0;;n++)if((x-=b[n]10、.m)<0)break;printf("收购第:");for(i=0;i
5、;b[j].l>b[i].lYNcent=b[i]b[i]=b[j]b[j]=centfor(n=0;;n++);(x-=b[n].m)<0YNBreakfor(i=0;i6、说明结构体可以用字母B代替,结构体中定义所需的变量类型。3.主函数中结构体Bb[N]定义各变量。4.以整型数据输入物品的种类,并在屏幕上自动显示出来,用一个for循环来控制程序中物品的种类数。5.输入每种货物的质量和所获利润,并计算他们的比,即h7、m6.输入背包的最大载重,并利用for循环使货物的最大质量不能超过背包的最大载重。7.if(b[j].l>b[i].l){cent=b[i];b[i]=b[j];b[j]=cent;使b[i]和b[j]的值互换以达到l降序排列的目的。8.if((x-=b[n].m8、)<0)break;使选择货物的质量不能超过背包的质量。9.最后利用语句y+=b[i].h;使利润进行累加,最终输出最大利润。六,源程序#include"stdio.h"#defineN30typedefstruct{intbh;intm;inth;floatl;}B;main(){Bb[N],cent;inti,a,j,n;intx,y=0;printf("要输入货物的种类数:");scanf("%d",&a);for(i=0;i9、物的质量m:",b[i].bh);scanf("%d",&b[i].m);printf("请输入第%d种货物获利h:",b[i].bh);scanf("%d",&b[i].h);b[i].l=b[i].h/b[i].m;}printf("输入背包最大载重x:");scanf("%d",&x);for(i=0;ib[i].l){cent=b[i];b[i]=b[j];b[j]=cent;}for(n=0;;n++)if((x-=b[n]10、.m)<0)break;printf("收购第:");for(i=0;i
6、说明结构体可以用字母B代替,结构体中定义所需的变量类型。3.主函数中结构体Bb[N]定义各变量。4.以整型数据输入物品的种类,并在屏幕上自动显示出来,用一个for循环来控制程序中物品的种类数。5.输入每种货物的质量和所获利润,并计算他们的比,即h
7、m6.输入背包的最大载重,并利用for循环使货物的最大质量不能超过背包的最大载重。7.if(b[j].l>b[i].l){cent=b[i];b[i]=b[j];b[j]=cent;使b[i]和b[j]的值互换以达到l降序排列的目的。8.if((x-=b[n].m
8、)<0)break;使选择货物的质量不能超过背包的质量。9.最后利用语句y+=b[i].h;使利润进行累加,最终输出最大利润。六,源程序#include"stdio.h"#defineN30typedefstruct{intbh;intm;inth;floatl;}B;main(){Bb[N],cent;inti,a,j,n;intx,y=0;printf("要输入货物的种类数:");scanf("%d",&a);for(i=0;i9、物的质量m:",b[i].bh);scanf("%d",&b[i].m);printf("请输入第%d种货物获利h:",b[i].bh);scanf("%d",&b[i].h);b[i].l=b[i].h/b[i].m;}printf("输入背包最大载重x:");scanf("%d",&x);for(i=0;ib[i].l){cent=b[i];b[i]=b[j];b[j]=cent;}for(n=0;;n++)if((x-=b[n]10、.m)<0)break;printf("收购第:");for(i=0;i
9、物的质量m:",b[i].bh);scanf("%d",&b[i].m);printf("请输入第%d种货物获利h:",b[i].bh);scanf("%d",&b[i].h);b[i].l=b[i].h/b[i].m;}printf("输入背包最大载重x:");scanf("%d",&x);for(i=0;ib[i].l){cent=b[i];b[i]=b[j];b[j]=cent;}for(n=0;;n++)if((x-=b[n]
10、.m)<0)break;printf("收购第:");for(i=0;i
此文档下载收益归作者所有