初次接触分治算法还是在做洛谷时,所以洛谷是个好网站,感谢好友推荐!
p1010幂次方
#include<iostream>
using namespace std;
int n;
void search(int x){
if(n!=0){
int p=1,q=0;
cout<<'2';//每一次搜索都要输出2
while(x>=p){
++q;
p*=2;
}
--q;//多算了一次幂
if(q==0||q==2) cout<<'('<<q<<')';//0次幂与二次幂直接输出
if(q>=3){//幂大于3
cout<<'(';
search(q);
cout<<')';
}
x-=p/2;//p多乘了一个2
if(x){//分开处理 ,并且q=1,不进行进一步处理
cout<<'+';search(x);
}
}
}
int main(){
cin>>n;
search(n);
return 0;
}
好吧,又明白了一件事,原来插入代码要这样搞。
分治算法好像也离不开dfs思想,可见dfs还是挺重要的。
这篇文章挺水的。