简单dfs,40pts求助

P4715 【深基16.例1】淘汰赛

当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


|