PAT B1023 组个最小数
非常简单的贪心,注意输入数据范围,保证了有非零数字,但是同时最多可以有50个数,longlong也会爆,一定要直接输出
其实ans数组可以不用,输出就行

#include<stdio.h> #include<iostream> #include<string.h> using namespace std; int main() { long long num=0; int temp[15]; for(int i=0;i<=9;i++) scanf("%d",&temp[i]); int ans[55]; int a=1; while(temp[a]==0) a++; ans[0]=a; temp[a]--; int now=1; a=0; while(a<10) { while(temp[a]>0) { ans[now++]=a; temp[a]--; } a++; } for(int i=0;i<=now-1;i++) { cout<<ans[i]; //num*=10; //num+=ans[i]; } //printf("%lld",num); return 0; }

#include<stdio.h> #include<iostream> #include<string.h> using namespace std; int main() { long long num=0; int temp[15]; for(int i=0;i<=9;i++) scanf("%d",&temp[i]); int ans[55]; int a=1; while(temp[a]==0) a++; cout<<a; temp[a]--; a=0; while(a<10) { while(temp[a]>0) { cout<<a; temp[a]--; } a++; } return 0; }