弱弱问一句,这个题输出结果一定要和题解一样吗,做了好久了,还是不对>_<
附代码,望大神指导
#include<bits/stdc++.h>
using namespace std;
const int N=4e4;
int n;
int tree[N],tree1[N];
int fl(int n){
int sum=0;
while(n>0){
n/=2;
sum++;
}
return sum;
}
void bd(int i,int n){
if(fl(i)==n){
return;
}
int sum=pow(2,fl(i)-1);
tree[2*i]=tree[i]+sum;
tree[2*i+1]=tree[2*i]+sum;
bd(2*i,n);
bd(2*i+1,n);
}
void fs(int n){
if(tree[n]==0){
return;
}
cout<<tree[n]<<" ";
fs(2*n);
fs(2*n+1);
}
int main(){
cin>>n;
tree[1]=1;
bd(1,n);
fs(1);
return 0;
}
我是蒟蒻