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 }

 

posted @ 2025-11-05 09:52  TFLSZXL  阅读(27)  评论(0)    收藏  举报