在是2的幂的时候个数为1。在这之后,每次都会从头开始在增加现在这个数的大小。相当于从1再走一遍。
#include<iostream>
#include<vector>
using namespace std;
int main()
{
int num=8;
vector<int> res = vector<int>(num+1,0);
int pow2 = 1,before =1;
for(int i=1;i<=num;i++){
if (i == pow2){
before = res[i] = 1;
pow2 <<= 1;
}
else{
res[i] = res[before] + 1;
before += 1;
}
}
for(int i=0;i<res.size();i++)
{
cout<<res[i]<<" ";
}
}