【问题标题】:Possible missing corner test case可能缺少角落测试用例
【发布时间】:2014-02-06 19:59:04
【问题描述】:

对于以下问题,我已经尝试并修改了几个测试用例的代码,但我仍然得到在线法官的错误答案。请告诉我测试用例,我的代码中缺少任何我看不到的可能错误

问题:

厨师正在为他的一位客人准备生日蛋糕, 他决定在蛋糕上用蜡烛写下客人的年龄。 蜡烛有 10 种类型,数字“0”到“9”各有一种。 然而,厨师忘记了客人的年龄,所以不知道他是否有足够的合适类型的蜡烛。 例如,如果客人 101 岁,厨师需要两支“1”蜡烛和一支“0”蜡烛。 给定厨师拥有的蜡烛,您的任务是确定不能用这些蜡烛表示的最小正整数。 输入:

输入将以整数 T≤100 开始,即测试用例的数量。 每个测试用例由一行正好有 10 个整数组成,每个整数都在 0 到 8 之间,包括 0 到 8。 每个测试用例的第一个整数代表厨师拥有的“0”蜡烛的数量, 第二个整数表示厨师拥有的“1”蜡烛的数量,依此类推。 输出:

对于每个测试用例,在一行上输出不能用给定蜡烛表示的最小正整数。 示例输入:

3

2 1 1 4 0 6 3 2 2 2

0 1 1 1 1 1 1 1 1 1

2 2 1 2 1 1 3 1 1 1

样本输出:

4 10 22

这是我针对上述问题的代码:

#include<iostream>
#include<math.h>
using namespace std;
int main()
{
    int t;
    cin>>t;
    while(t--)
    {
        int arr[10];
        for(int i=0;i<10;i++)
            cin>>arr[i];
        int min_value=arr[1],min_index=1;
        for(int i=1;i<10;i++)
        {
            if(min_value>arr[i])
            {
                min_value=arr[i];
                min_index=i;
            }
        }
        if(min_value==0)
            cout<<min_index<<endl;
        else if(min_value!=0&&arr[0]==0)
            cout<<10<<endl;
        else if(min_value!=0&&arr[0]!=0)
        {
            if(arr[0]<min_value)
                cout<<min_index*pow(10,arr[0]+1);
            else if(arr[0]>=min_value)
            {
                for(int i=0;i<=min_value;i++)
                    cout<<min_index;
                cout<<endl;
            }
        }
    }
}

还告诉我找到排除第 0 阶索引并包括第 0 阶索引的最小值是否会对问题的答案产生任何影响?

【问题讨论】:

    标签: c++ arrays indexing


    【解决方案1】:

    这个 for 循环并没有像你想象的那样做:

            for(int i=0;i<min_value;i++)
                age=min_index*10+min_index;
    

    【讨论】:

    • 请检查我的新解决方案并告诉我错误我仍然得到错误答案
    【解决方案2】:

    如果 arr[0] == min_value 会发生什么?例如

    2

    1 1 2 3 4 5 6 7 8 9

    5 5 8 8 8 8 8 8 8 8

    您当前的代码显示:

            if(arr[0]<min_value)
                cout<<min_index*pow(10,arr[0]+1);
            else if(arr[0]>min_value)
            {
            ...
            }
    

    【讨论】:

    • 我已经相应地编辑了代码......但我仍然得到一个错误的答案
    • 不,你没有。 1 1 2 3 4 5 6 7 8 9 案例的答案是 11。您编辑的代码当前显示为 100。
    • 我再次更改了代码,对于您的测试用例,它给出了 11 作为答案,但它仍然给我在 codechef 上的错误答案
    • 好吧,我不确定。我们发现并修复了很多问题。现在,我现在唯一关心的代码是:` cout
    猜你喜欢
    • 1970-01-01
    • 2021-08-23
    • 1970-01-01
    • 2017-03-22
    • 1970-01-01
    • 2016-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多