直接用排序把数组从小到大排好,把排好序后的第一个不是0的数字移动到第一位。
#include <iostream> #include <bits/stdc++.h> using namespace std; int main() { int a[10001]; int k = 0; for(int i = 0; i < 10; i++) { int number; cin >> number; while(number) { a[k++] = i; number--; } } sort(a, a + k); for(int i = 0; i < k; i++) { if(a[i] != 0) { int temp = a[i]; a[i] = a[0]; a[0] = temp; break; } } for(int i = 0; i < k; i++) { cout << a[i]; } return 0; }