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循环,导致首位输出出错