C题解 1023 组个最小数 (20 分)


原题

https://pintia.cn/problem-sets/994805260223102976/problems/994805298269634560

代码

可能疏忽的地方。填入测试用例2 0 0 0 0 3 0 0 1 0

#include 
#include 
using namespace std;

vector vec(10, 0);
int main()
{
    for (int i = 0; i < 10; i++)
    {
        cin >> vec[i];
    }

    for (int i = 1; i < 10; i++) //确定第一个数
    {
        if (vec[i] > 0)//按顺序1-9中,个数不为0的,作为第一个数输出
        {
            vec[i]--;
            cout << i;
            break;
        }
    }

    for (int i = 0; i < 10; i++)
    {
        while (vec[i] > 0)
        {
            cout << i;
            vec[i]--;
        }
    }
    return 0;
}

别人的,用t记录了除开0的最小值。

#include 
using namespace std;
int main() {
    int a[10], t;
    for (int i = 0; i < 10; i++)
        cin >> a[i];
    for (int i = 1; i < 10; i++) {
        if (a[i] != 0) {
            cout << i;
            t = i;
            break;
        }
    }
    for (int i = 0; i < a[0]; i++) cout << 0;
    for (int i = 0; i < a[t] - 1; i++) cout << t;
    for (int i = t + 1; i < 10; i++)
        for (int k = 0; k < a[i]; k++)
            cout << i;
    return 0;
}