社区讨论
对于若是有重复能力值时,下列方法不适用!!!
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 条回复,欢迎继续交流。
正在加载回复...