4 条题解

  • 7
    @ 2023-7-23 12:07:40

    解析

    输入的数字太大,考虑使用string处理。

    从字符串的视角审视数字:

    1. 如果两个字符串不一样长,那么字符串长的较大。
    2. 如果两个字符串一样长,那么字典序大的比较大

    题解

    #include <iostream>
    #include <algorithm>
    using namespace std;
    bool cmp(string a, string b)
    {
        if (a.length() != b.length())
            return a.length() < b.length();
        else
            return a < b;
    }
    int main()
    {
        string a[1005];
        int n;
        cin >> n;
        for (int i = 1; i <= n; i++)
            cin >> a[i];
        sort(a + 1, a + n + 1, cmp);
        for (int i = 1; i <= n; i++)
            cout << a[i] << " ";
        return 0;
    }
    
    • 2
      @ 2023-7-23 16:19:54

      思路:

      因为这题没有给每个数字的数据规模与约定,所以我们需要用string来解决这个问题

      用string类型判断数字大小:

      如果长度一样,按字典序判断

      否则,长度更长的更大

      #include <iostream>
      #include <algorithm>
      #include <string>
      using namespace std;
      
      bool cmp(string a,string b)
      {
          if(a.length() == b.length())//如果长度一样
              return a < b;//按字典序判断
          else
              return a.length() < b.length();//否则,长度越长的越大,也就是说,长度更短的在更长的的左边
      }
      
      int main()
      {
          int n;
          cin >> n;
          string a[1005];
          for(int i = 0;i < n;i++)
              cin >> a[i];
          sort(a,a + n,cmp);
          for(int i = 0;i < n;i++)
              cout << a[i] << ' ';
          return 0;
      }
      
      • 1
        @ 2023-8-2 17:01:20

        由于看你们写题解好玩,我也写一个

        非常正常的一个题解

        
        

        #include <iostream> #include <algorithm> using namespace std; bool cmp(string a, string b)//有点懒,看了下客户端抄的 { if (a.length()!= b.length()) return a.length() < b.length(); else return a < b; } int main() { string a[1005]; int n; cin >> n; for (int i = 1; i <= n; i++) cin >> a[i]; sort(a + 1, a + n+1, cmp); for (int i = 1; i <= n; i++) cout << a[i] << " "; return 0; }

        
        

        先判断数字大小(位数高>位数低,位数一样正常(a<b))

        • 1
          @ 2023-7-24 21:30:25

          欢迎加入压缩流,思路与以下两位一致👀️

          对了,谁没复制核桃或题解上的666

          #include <iostream>
          #include <string>
          #include <algorithm>
          // #include <bits/stdc++.h> 懒人专用
          int yasuo(std::string a,std::string b){
              if(a.length()==b.length()) return a<b;
              return a.length()<b.length();}
          int main(){
              int q;std::string a[1005];std::cin>>q;
              for(int i=0;i<q;i++) std::cin>>a[i];
              sort(a,a+q,yasuo);
              for(int i=0;i<q;i++) std::cout<<a[i]<<" ";
              return 0;}
          
          • 1

          信息

          ID
          324
          时间
          1000ms
          内存
          256MiB
          难度
          7
          标签
          递交数
          1720
          已通过
          433
          上传者