PAT B1023

PAT B1023

标签(空格分隔): PAT


解决方法:贪心法

#include <cstdio>

int main() {
    int count[10];
    for (int i = 0; i < 10; i++) {
        scanf("%d", &count[i]);
    }
    for (int i = 1; i < 10; i++) {
        if (count[i] > 0) {
            printf("%d", i);
            count[i]--;
            break;
        }
    }
    for (int i = 0; i < 10; i++) {
        for (int j = 0; j < count[i]; j++) {
            printf("%d", i);
        }
    }
    return 0;
}


下面是我只能过三个数据点的代码

#include <cstdio>

int num[15];

int main() {
    for (int i = 0; i < 10; i++) {
        scanf("%d", &num[i]);
    }

    for (int i = 1; i < 10; i++) {  //错误的地方
        while (num[i] != 0) {
            printf("%d", i);
            num[i]--;
            break;
        }
        break;
    }

    for (int i = 0; i < 10; i++) {
        while (num[i] > 0) {
            printf("%d", i);
            num[i]--;
        }
    }
    return 0;
}

错误点在于,当不满足while条件时,break同时break出了for循环,导致首位输出出错

原文地址:https://www.cnblogs.com/Kirarrr/p/10340055.html