一个长度为L米的材料,需要截成长度为a米和b米的短材料,求两种短材料各截多少根时,剩余的材料最少。
输入
数据有多行,每行三个整数,分别是L,a,b;
输出
每行输出截出a长度和截出b长度材料的根数,结果有多个时,只输出总根数最少或最长材料根数最少的数据。
样例输入
样例输出
#include <iostream> using namespace std; int main() { int maxa,maxb,l,x,y,min,n,m,i,j,sheng; while(cin>>l>>n>>m) { min=10000; maxa=l/n; maxb=l/m; if(m>n) { int t=n;//判断大小 n=m; m=t; } for(i=0;i<=maxa;i++) for(j=0;j<maxb;j++) { sheng=l-i*n-j*m; if(sheng<0) continue; else { if(sheng<=min) { min=sheng; x=i; y=j; if(i<x) { min=sheng; x=i; y=j; } } } } cout<<x<<" "<<y<<endl; } return 0; }
#include<stdio.h>
void main()
{
int L,a,b,x,y,i,j,sub,min;
int maxa,maxb;
printf("请输入材料长度L:");
scanf("%d",&L);
printf("请输入短材料a和b的长度:");
scanf("%d%d",&a,&b);
min=L;
maxa=L/a;//a材料最多的数目
maxb=L/b;//b材料最多是数目
for(i=0;i<=maxa;i++)
for(j=0;j<=maxb;j++)
{
sub=L-i*a-j*b;
if(sub<0)continue;
else
{
if(sub<min)
{
min=sub;
x=i;
y=j;
}
}
}
printf("a材料%d段,b材料%d段\n",x,y);
}
你的方法我提交超时了。