0

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;
}

这个程序是由一位在线评委评估的。他说我的样本数据评估正确,但是大数据和更多数据不是。所以我不知道为什么我的程序需要很长时间。

谢谢

4

0 回答 0