4 条题解
-
7
解析
输入的数字太大,考虑使用string处理。
从字符串的视角审视数字:
- 如果两个字符串不一样长,那么字符串长的较大。
- 如果两个字符串一样长,那么字典序大的比较大
题解
#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
思路:
因为这题没有给每个数字的数据规模与约定,所以我们需要用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
由于看你们写题解好玩,我也写一个
非常正常的一个题解
#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
欢迎加入压缩流,思路与以下两位一致👀️
对了,谁没复制核桃或题解上的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
- 标签
- 递交数
- 1753
- 已通过
- 436
- 上传者