2 条题解

  • 2
    @ 2026-3-22 9:06:35

    这道题十分简单,问你一个字符串重排后组成的最大数是多少,很显然,我们按照题意模拟,将0~9每个数字出现的次数得到,接着从9~0输出即可,注意特判

    #include<bits/stdc++.h>
    using namespace std;
    #define int long long
    #define made return
    #define in 0
    #define china ;
    string s;
    int cnt[10];
    bool f;
    signed main(){
    	ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
    	cin>>s;
    	for(int i=0;i<s.size();i++)
    		if(s[i]>='0'&&s[i]<='9')
    			cnt[s[i]-'0']++;
    	for(int i=9;i>=1;i--){
    		for(int j=1;j<=cnt[i];j++){
    			f=1;
    			cout<<i;
    		}
    	}
    	if(f)
    		for(int i=1;i<=cnt[0];i++)
    			cout<<0;
    	else
    		cout<<0;
    	made in china
    }
    
    • 1
      @ 2026-4-4 18:23:49

      我不会贪心 先筛选出数字 大的排前面,然后用桶排序的思想来输出即可。

      #include <bits/stdc++.h>
      using namespace std;
      const int MAXN = 1e6 + 10;
      char s[MAXN];
      int cnt[10];
      int main(void) {
      	scanf("%s", s);
      	int len = strlen(s);
      	for (int i = 0;i < len;++i) {
      		if (s[i] >= 'a' && s[i] <= 'z') continue;
      		cnt[s[i] - '0']++;
      	}
      	for (int i = 9;i >= 0;--i) {
      		for (int j = 0;j < cnt[i];++j) {
      			cout << i;
      		}
      	} 
      	return 0;
      }
      
      • 1

      信息

      ID
      310
      时间
      1000ms
      内存
      512MiB
      难度
      4
      标签
      递交数
      24
      已通过
      8
      上传者