对于以下问题,我已经尝试并修改了一些测试用例的代码,但是仍然在线判断时得到错误的答案。请告诉我这个测试用例,我找不到我看不见的代码中的任何可能的错误

问题:

厨师正在为其中一位客人准备生日蛋糕,
他决定用蛋糕上的蜡烛写下客人的年龄。
蜡烛有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阶索引的最小值对问题的答案有影响吗?

最佳答案

此for循环不会执行您认为的操作:

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

关于c++ - 可能缺少转角测试用例,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21612763/

10-12 20:44