美文网首页
PAT 1023 组个最小个数(20分)

PAT 1023 组个最小个数(20分)

作者: 昭明ZMing | 来源:发表于2018-12-15 17:33 被阅读0次
#include<cstdio>
#include <iostream>
using namespace std;

int main()
{
    int num[10];
    int i;
    for(i=0;i<10;i++)
    {
        scanf("%d",&num[i]);
    }
    for(i=1;i<10;i++)
    {
        if(num[i]>0)
        {
            printf("%d",i); 
            num[i]--;
            break;
        }
    }
    for(i=0;i<10;i++)
    {
        while(num[i]--)
        {
            printf("%d",i); 
        }
    }return 0;
}
方法2
#include <iostream>
#include <string>
#include<algorithm>
using namespace std;
int main()
{
    int m;
    string n;
    int k = 0,count = 0;
    while (cin >> m) {
        while (m--) 
            n +=k+'0';//整数0代表字符'\0'
          k++;
    }
    sort(n.begin(), n.end());
    while (n[0] == '0') 
        swap(n[0], n[count++]);
    cout << n;
    return 0;
}
//将数字从小到大排序后,利用交换法,把第一个非0数换到首位,这样就能得到最小数字。
方法3
#include <iostream>
using namespace std;
int main() {
    int a[10], t;
    for (int i = 0; i < 10; i++)
        cin >> a[i];
    for (int i = 1; i < 10; i++) {
        if (a[i]>0) {
            cout << i;
            t = i;
            break;//找到一个就break
        }
    }
    for (int i = 0; i < a[0]; i++) cout << 0;
    for (int i = 0; i < a[t] - 1; i++) cout << t;
    for (int i = t + 1; i < 10; i++)
        for (int k = 0; k < a[i]; k++)
            cout << i;
    return 0;
}

GitHub

相关文章

网友评论

      本文标题:PAT 1023 组个最小个数(20分)

      本文链接:https://www.haomeiwen.com/subject/xcbahqtx.html