输入给定数字若干个,将其排列且必须全部使用,使得最后得到的数尽可能小(要求首位不为0)
#include<cstdio>
#include<algorithm>
using namespace std;
int main() {
int num[20]; //将输入保存进数组num中
int count = 0; //统计输入数字个数
while(scanf("%d",&num[count])!=EOF) {
count++;
}
sort(num,num+count); // 从小到大排列数组的前count位
for(int i=0;i<count;i++) {
if(num[i]==0&&num[i+1]!=0) { // 如果输入的数字中包含0
int temp = num[0]; // 将和数字0相邻的且非0的数字和数组的首位交换
num[0] = num[i+1];
num[i+1] = temp;
break;
}
}
for(int i=0;i<count;i++) {
printf("%d", num[i]);
}
printf("\n");
return 0;
}