 悬赏园豆:20
                [已解决问题] 
            
                    解决于 2013-11-05 19:19
                悬赏园豆:20
                [已解决问题] 
            
                    解决于 2013-11-05 19:19 
                 
        一个长度为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);
}
你的方法我提交超时了。