SHELVES 问题:
输入:输入的第一行包含 N 1000 个测试用例。然后是 N 行。每行都是一个测试用例,包含 3 个严格的正整数 l、m 和 n。数字 l< 2^31 31 表示墙的长度,而 m 和 n 表示两种货架类型的长度,m <=n < 2^31
输出:对于每个测试用例,您应该输出长度为 m 和 n 的货架的最佳数量,以使它们的长度之和最多and as close to
。如果有多种解决方案,您应该更喜欢使用最大数量的长度为 n 的架子的解决方案。对于每个测试用例输出一行,其中包含由单个空格分隔的 3 个整数。前两个整数是长度为 m 和 n 的架子的数量,第三个是在最优解中未覆盖的墙的数量。样本输入
3
24 3 5
29 3 9
42 4 5
样本输出
3 3 0
0 3 2
3 6 0
这是我的程序:
#include "stdafx.h"
#include<iostream>
#include<conio.h>
#include<vector>
#include<stdio.h>
using namespace std;
int G=1;
void foo(int l,int m,int n,int part1)
{
int part2;
if(m==0)
part2=0;
else
part2=(l-part1*n)/m;
if(part1*n+part2*m==l)
{
cout<<part2<<" "<<part1<<" 0"<<endl;
G=0;
}
else
if(part1>0)
{
foo(l,m,n,part1-1);
}
}
int main()
{
int l,nn=0,m,n=0,part1,part2,rem;
cin>>nn;
while(nn!=0)
{
G=1;
cin>>l>>m>>n;
part1=l/n;
foo(l,m,n,part1);
if(G==1)
{
part1=l/n;
part2=(l-part1*n)/m;
rem=l-(part1*n+part2*m);
cout<<part2<<" "<<part1<<" "<<rem<<endl;
}
nn--;
}
getch();
return 0;
}
这个程序是由一位在线评委评估的。他说我的样本数据评估正确,但是大数据和更多数据不是。所以我不知道为什么我的程序需要很长时间。
谢谢