60分求助
查看原帖
60分求助
484582
啵啵糖Fa楼主2021/4/4 20:23

思路:两两比较,小的删,直到剩下最后一个,那么最后删去的那个就是答案

#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

2021/4/4 20:23
加载中...