求助这错的太离谱了
  • 板块学术版
  • 楼主M213
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/4/27 21:20
  • 上次更新2024/4/28 07:48:06
查看原帖
求助这错的太离谱了
556815
M213楼主2024/4/27 21:20

拼数

题目描述

Karl 有 nn 个数字(值为 0∼90 \sim 9),现在 Karl 想用上全部数字摆成一个数 xx(不含前导零)。请你帮助 Karl 计算—— xx 的最小值是多少。

你需要依次处理 tt 个这样的问题。

输入格式

第一行一个正整数 tt,表示问题的数量。

接下来 tt 块:

第一行一个正整数 nn 表示数字个数。

第二行 nn 个数字 a1,...,ana_1,...,a_n 表示对应的数字。

输出格式

tt 行,每行一个数字表示结果。

样例 #1

样例输入 #1

2
3
1 2 3
4
1 0 3 4

样例输出 #1

123
1034

样例 #2

样例输入 #2

2
3
1 1 3
4
4 5 6 5

样例输出 #2

113
4556

提示

【数据范围】

对于所有数据,1≤t≤1021 \leq t\leq 10^2,1≤n≤1031 \leq n \leq 10^3,0≤ai≤90 \leq a_i \leq 9。

测试点编号nn特殊约束
1∼61 \sim 6≤10\leq 10每种数字只出现一次
7∼127 \sim 12≤10\leq 10无
13∼2013 \sim 20≤103\leq 10^3无

【样例 1 解释】

第一组数据中,能摆成的数有 123,132,213,231,312,321123,132,213,231,312,321, 其中 123123 是这些数中最小的。

第二组数据中,由于不能含有前导零,能摆成的数有 1034,1043,1304,1340,1403,1430,...,43101034,1043,1304,1340,1403,1430,...,4310,其中 10341034 是这些数中最小的。

【样例 2 解释】

第一组数据中,能摆成的数有 113,131,311113,131,311,其中 113113 是这些数中最小的。

第二组数据中,能摆成的数有 4556,4565,4655,5456,...,65544556,4565,4655,5456,...,6554,其中 45564556 是这些数中最小的。


上边是题目


code如下

#include <bits/stdc++.h>
using namespace std;

int T;
int n;
int a[1010];

int main()
{
    cin >> T;
    while(T--){
        int t = 0,z = 0;
        cin >> n;
        for(int i = 1;i <= n;i++){
            int x;
            cin >> x;
            if(x == 0){
                z++;
            }else{
                t++;
                a[t] = x;
            }
        }
        sort(a + 1,a + t + 1);
        if(z == 0){
            for(int i = 1;i <= t;i++){
                cout << a[i];
            } 
            cout << endl;
        }else{
            cout << a[1];
            for(int i = 1;i <= z;i++){
                cout << 0;
            } 
            for(int i = 2;i <= t;i++){
                cout << a[i];
            } 
            cout << endl;
        }
    }
    return 0;
}

80分也不知道错了哪里


请大佬指教

2024/4/27 21:20
加载中...