当n==2的时候,你测一下2 3 1 4,你的结果返回的是1但是实际结果应该是2,你直接用队列去做更方便
by Gjanuary @ 2023-08-03 23:51:27
@[Suboil](/user/1026350)
这一题超级简单啊,为什么还要用到dfs这么复杂的算法。
左边选一个最大的,右边选一个最大的,
然后这两个比较,大的是冠军,小的是亚军,贴上我的代码,仅供参考。
```
#include <bits/stdc++.h>
#define f(i,a,b) for(int i=a;i<=b;i++)
#define g(i,a,b) for(int i=a;i>=b;i--)
using namespace std;
int n;
struct country {
int id,num;
}a[500];
country max1,max2;
int main(){
cin >> n;
n = 1 << n;
f(i,1,n) {
cin >> a[i].num;
a[i].id = i;
}
f(i,1,n >> 1) {
if(max1.num < a[i].num) max1 = a[i];
}
f(i,(n >> 1)+1,n) {
if(max2.num < a[i].num) max2 = a[i];
}
if(max1.num < max2.num) cout << max1.id;
else cout << max2.id;
return 0;
}
```
by mooktian @ 2023-08-05 21:02:22