蒟蒻求教
  • 板块学术版
  • 楼主2011Andy
  • 当前回复5
  • 已保存回复5
  • 发布时间2024/4/7 21:30
  • 上次更新2024/4/7 21:41:00
查看原帖
蒟蒻求教
660871
2011Andy楼主2024/4/7 21:30

题目如下:

拼数

题目描述

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 是这些数中最小的。

#include<bits/stdc++.h>
using namespace std;
int T;
int n;
int a[105];
int main(){
	cin >> T;
	while(T--){
		cin >> n;
		for(int i = 1 ; i <= n ; i++){
			cin >> a[i]; 
		}
		int minn = 10 , minnid;
		for(int i = 1 ; i <= n ; i++){
			if(minn >= a[i] && a[i] != 0) minn = a[i] , minnid = i;
		}
		cout << minn;
		a[minnid] = 114514;
		for(int j = 1 ; j <= n - 1 ; j++){
			int mini = 10 , miniid;
			for(int i = 1 ; i <= n ; i++){
				if(mini >= a[i]) mini = a[i] , miniid = i;
			}
			cout << mini;
			a[miniid] = 114514;
		}
		cout << "\n";
	}
	return 0;
}```
40分,dalao求条
2024/4/7 21:30
加载中...