求大佬帮助,为什么第三个测试点不通过

P1781 宇宙总统

```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


|