P1781 宇宙总统

edr?
by FXLIR @ 2024-03-17 09:47:28


这是字符串的做法 大致思路就是排序: 不同位数位数多的往前排 相同位数字符串值大的往前排 所以可以保证数组第一个是最优的 开pair是保证序号不变 ``` #include <iostream> using namespace std; int a[25][101]; string s[25]; int MAX,maxsize=0; int n; int main(){ cin >> n; for(int i=1;i<=n;i++){ cin >> s[i]; if(s[i].size()>maxsize){ MAX=i; maxsize=s[i].size(); } else if(s[i].size()<maxsize){ continue; } else{ if(s[i]>s[MAX]){ MAX=i; maxsize=s[i].size(); } } } cout << MAX << endl; cout << s[MAX]; return 0; } ``` 希望能帮到你 awa
by guohanyu20100507 @ 2024-03-17 10:53:24


@[guohanyu20100507](/user/742902) 感谢
by Kobe_Bryan @ 2024-03-18 07:53:53


@[guohanyu20100507](/user/742902) 排序?
by DFs_YYDS @ 2024-03-18 13:29:17


@[Kobe_Bryan](/user/1072801) ```cpp #include <iostream> #include <algorithm> using namespace std; class student{ public: int id; string s; }; int n; student arr[25]; bool cmp(student s1,student s2){ //比较位数,位数大的排前面 if(s1.s.length()!=s2.s.length()){ return s1.s.length()>s2.s.length(); }else{ //位数相等 从第一位开始比较 如果相等就++,不相等则大的排前面 int j=0; while(s1.s[j]==s2.s[j]){ j++; } return s1.s[j]>s2.s[j]; } } int main(){ cin>>n; for(int i=1;i<=n;i++){ cin>>arr[i].s; arr[i].id=i; } sort(arr+1,arr+1+n,cmp); cout<<arr[1].id<<endl; cout<<arr[1].s; } ```
by amaoagou @ 2024-03-22 17:20:19


|