洛谷P1010:
因为寒假有acm集训选拔 , 作为一个弱渣 ,把自己有收获的题目记录下来,来勉励自己多做题题目:
题目类型:
递归,分治
题解:
#include<stdio.h>
#include<math.h>
void dfs(int num);
int main(){
int n;
scanf("%d",&n);
dfs(n);
return 0;
}
//核心
void dfs(int num){
int i;
for(i=14;i>0;--i){
if(pow(2,i) <= num){
if(i==0) printf("2");
if(i==1) printf("2(0)");
else if(i == 1){
;
printf("2(");
dfs(i);
printf(")");
}
num -= (2,i);
if(num>0) printf("+");
}
}
}
思路加反思:
思路 :把目标数拆分成若干2的次幂,先对第一部分递归,剩下的数会通过循环再次被dfs。本题难住本渣很长时间。