acm学习1

洛谷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。本题难住本渣很长时间。

猜你喜欢

转载自blog.csdn.net/qq_53755216/article/details/111941456