对于若是有重复能力值时,下列方法不适用!!!
查看原帖
对于若是有重复能力值时,下列方法不适用!!!
694105
Cy_0713楼主2022/3/26 09:24

可能是这题中的数据库中没有具有重复值的,所以这道题我勉强满分拿到```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; }

2022/3/26 09:24
加载中...