欢迎来到天天文库
浏览记录
ID:40851321
大小:30.50 KB
页数:3页
时间:2019-08-08
《求解钢材切割的最佳订单》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、本题为第五届全国ITAT教育工程就业技能大赛决赛试题C语言程序设计第一题题目描述1、求解钢材切割的最佳订单。(60分)(1)描述:编写程序,从订单中选择一组订单对钢材作切割加工,使钢材得到最佳利用,约定每一次切割会损耗固定长度的钢材(约定该值为2)。已知线型钢材总长度、订单数和各订单需要的钢材长度;(2)输入:钢材总长度s、订单数n、各定单需要的钢材长度;(3)输出:可以使钢材得到最佳利用的订单号、该订单需要的钢材长度。例如:Pleaseinputtotallengthofthesteels:28(回车)Pleaseinp
2、utnumberofordern:8(回车)Pleaseinputtheorders:5(回车)6(回车)7(回车)8(回车)9(回车)10(回车)12(回车)15(回车)屏幕输出:Choiceoneorder1length=5order3length=7order7length=12Choicetwoorder2length=6order4length=8order6length=10Pressanykeytoquit…代码如下#include#includeint*p,*pt;in
3、tglen,dnum,i,sum=0,n,num=0;intnlen=0;voidtest(intstart,intend,intglen)//测试函数{intnu=0,len=0,n,m,i;pt[start]=1;//选中for(i=0;i<=end;i++)if(pt[i]){len+=pt[i]*p[i];nu++;}//求选中的总长if(len+(nu-2)*2==glen){for(n=1;n<=end;n++)if(pt[n])printf("订单号是:%d,长度为:%d",n,p[n]);nlen++;pr
4、intf("");}//输出if(len+(nu-2)*25、6、(pt=7、=NULL)){printf("内存不足,分配失败");return0;}p[0]=0;for(i=1;i<=dnum;i++)//输入订单需求{printf("第%d个订单需要钢材的长度",i);scanf("%d",&p[i]);}for(i=0;i<=dnum+1;i++)pt[i]=0;/*对于函数调用中,首先将每一个元素置1,选中,再递归,置0,恢复。但对于第一个元素不是这样的,只有选中的情况,没有置0的情况,当第一个元素为0时,第一层递归也就结束了,所以我第一个元素是不用的(只置1),从第二个开始,也就是下8、标为1的元素。所以申请n+1个*///voidtest(intstart,intend,intglen);test(0,dnum,glen);printf("共有%d种方案",nlen);return0;}
5、
6、(pt=
7、=NULL)){printf("内存不足,分配失败");return0;}p[0]=0;for(i=1;i<=dnum;i++)//输入订单需求{printf("第%d个订单需要钢材的长度",i);scanf("%d",&p[i]);}for(i=0;i<=dnum+1;i++)pt[i]=0;/*对于函数调用中,首先将每一个元素置1,选中,再递归,置0,恢复。但对于第一个元素不是这样的,只有选中的情况,没有置0的情况,当第一个元素为0时,第一层递归也就结束了,所以我第一个元素是不用的(只置1),从第二个开始,也就是下
8、标为1的元素。所以申请n+1个*///voidtest(intstart,intend,intglen);test(0,dnum,glen);printf("共有%d种方案",nlen);return0;}
此文档下载收益归作者所有