美文网首页
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