```cmp```函数有问题,在位数相同时楼主的码若第一位相等会直接```return 0;```
修改后如下:
```
#define _CRT_SECURE_NO_WARNINGS
#include<bits/stdc++.h>
using namespace std;
typedef struct People {
int a[101];
int num;
int size;
}people;
bool cmp(people m, people n) {
if (m.size == n.size) {
for (int i = 0; i < m.size; i++) {
if (m.a[i] > n.a[i]) {
return 1;
}
if (m.a[i] < n.a[i]) {
return 0;
}
}
}
else if (m.size > n.size) {
return 1;
}
else {
return 0;
}
}
int main() {
int n;
cin >> n;
people* p = (people*)malloc(sizeof(people) * n);
char** c = (char**)malloc(sizeof(char*) * n);
for (int i = 0; i < n; i++) {
c[i] = (char*)malloc(sizeof(char) * 101);
cin >> c[i];
p[i].num = i+1;
}
for (int i = 0; i < n; i++) {
int size = strlen(c[i]);
p[i].size = size;
for (int j = 0; j < size; j++) {
p[i].a[j] = c[i][j] - '0';
}
}
sort(p,p+n,cmp);
cout << p[0].num << endl;
for (int i = 0; i < p[0].size; i++) {
cout << p[0].a[i];
}
return 0;
}
~~~
by wxin @ 2024-02-04 20:15:52
@[sky_233](/user/1196571) (补一个@)
by wxin @ 2024-02-04 20:16:33
另,这道题其实不用那么麻烦qwq,只要求找出最大的所以可以直接遍历一遍打擂台
by wxin @ 2024-02-04 20:18:16
## 直接字符串打擂台,不用高精度!
```cpp
#include <iostream>
#include <cstring>
using namespace std;
int main() {
string s[21], maxn;
int n, id;
cin >> n;
for (int i = 1;i <= n;i++) {
cin >> s[i];
if (s[i].size() > maxn.size() ||
(s[i].size() == maxn.size() && s[i] > maxn)) {
id = i;
maxn = s[i];
}
}
cout << id << endl << maxn << endl;
return 0;
}
```
### 祝你 $ AK $ $ IOI $
by cyx012113 @ 2024-02-04 20:37:58
好的解决了,非常感谢
by sky_233 @ 2024-02-08 21:00:30
@[wxin](/user/607340) 感谢大佬!
by sky_233 @ 2024-02-08 21:02:35
@[cyx012113](/user/1099138) 感谢大佬!
by sky_233 @ 2024-02-08 21:03:12