社区讨论

对于若是有重复能力值时,下列方法不适用!!!

P4715【深基16.例1】淘汰赛参与者 3已保存回复 3

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
3 条
当前快照
1 份
快照标识符
@lo94ysj8
此快照首次捕获于
2023/10/28 05:39
2 年前
此快照最后确认于
2023/10/28 05:39
2 年前
查看原帖
可能是这题中的数据库中没有具有重复值的,所以这道题我勉强满分拿到```c #include #include using namespace std;
int suzu[130]; int n;//n代表的是suzu中的元素,suzu元素从1开始
void paixu(int cishu)//最开始的那个次数为0 { int jiange = pow(2,cishu); if(1+jiange>n) return;//此时已经找到冠亚军 else { int i=1; while(i<n) { if(suzu[i] < suzu[i+jiange]) { int q; q = suzu[i]; suzu[i] = suzu[i+jiange]; suzu[i+jiange] = q; } i = i+2*jiange; } paixu(cishu+1); } }
int main() { int num; cin>>num; n = pow(2,num); int yuan[130]; for(int i=1;i<=n;i++) { cin>>suzu[i]; yuan[i] = suzu[i]; } paixu(0); //选出的是亚军 int yajun; yajun = suzu[n/2+1]; for(int i=1;i<=n;i++) { if(yuan[i] == yajun) { cout<<i<<endl; break; } } return 0; }
CPP

回复

3 条回复,欢迎继续交流。

正在加载回复...