CSP2025-T1(拼数)
【题目来源】:https://www.luogu.com.cn/problem/P14357?contestId=288427
方法一:挑出数字后sort排序
1 #include<bits/stdc++.h>
2 using namespace std;
3 string s;
4 int a[1000020],k;
5 int main() {
6 cin>>s;
7 int i=0;
8 for(int i=0;i<s.size();i++){ //扫描字符串
9 if(s[i]>='0'&&s[i]<='9'){ //判断是否为数字
10 a[k++]=s[i]-'0'; //将数学存入数组
11 }
12 }
13 sort(a,a+k); //排序
14 for(int i=k-1;i>=0;i--){
15 cout<<a[i]; //倒序从大到小输出
16 }
17 return 0;
18 }
方法二:桶排序
1 #include<bits/stdc++.h>
2 using namespace std;
3 string s;
4 int a[1000020],k;
5 int main() {
6 cin>>s;
7 int i=0;
8 while(s[i]!='\0') { //扫描字符串
9 if(s[i]>='0'&&s[i]<='9') { //判断是否为数字
10 a[s[i]-'0']++; //下标为s[i]-'0'的位置计数
11 }
12 i++;
13 }
14 for(int i=9; i>=0; i--) {
15 while(a[i]) { //下标为i的位置不为0,输出i
16 cout<<i;
17 a[i]--;
18 }
19 }
20 return 0;
21 }

浙公网安备 33010602011771号