思路:两两比较,小的删,直到剩下最后一个,那么最后删去的那个就是答案
#include<cstdio>
#include<cmath>
using namespace std;
int n,ans,a[200];
void f(int s){
if(s==1) return;
int i,j=0;
for(i=j+1;i<=pow(2,n);++i){
for(j=i+1;j<=pow(2,n);++j){
if(a[i] && a[j]){
if(a[i]>a[j]) a[j]=0,ans=j;
else a[i]=0,ans=i;
break;
}
}
}
f(s/2);
}
int main(){
scanf("%d",&n);
for(int i=1;i<=pow(2,n);++i) scanf("%d",&a[i]);
f((int)pow(2,n));
printf("%d",ans);
return 0;
}
就想问问问题在哪?
555temiaode