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