zoukankan      html  css  js  c++  java
  • [USACO2.3.3][zerosum零的算式和][dfs]

    [USACO2.3.3][zerosum零的算式和][dfs]

    代码:

    #include
    #include
    #include
    int n;
    
    void
    dfs(int a,int b,int ans[10])
    {
      int i; 
      if(b==n-1){
        ans[b]=a;
    	int sum=1,last=1;
        for(i=1;i<=n-1;i++){
    		if(ans[i]==1){
                if(last<0){
    			  sum=sum-last+last*10-(i+1);
    			  last=last*10-(i+1);
                }
                if(last>=0){
    			  sum=sum-last+last*10+(i+1);
    			  last=last*10+(i+1);
                }
    		}
    		if(ans[i]==2){
    			last=i+1;
    			sum=sum+last;
    		}
    		if(ans[i]==3){
    			last=-i-1;
    			sum=sum+last;
    		}
    	}
    	if(sum==0){
    		printf("1");
    		for(i=2;i<=n;i++){
    			if(ans[i-1]==1)printf(" %d",i);
    			if(ans[i-1]==2)printf("+%d",i);
    			if(ans[i-1]==3)printf("-%d",i);
    		}
    		printf("\n");
    	}
        return;
      }
      ans[b]=a;
      for(i=1;i<=3;i++){
        dfs(i,b+1,ans);
      }
      return;
    }
    
    int main()
    {
      int ans[10]={0};
      int i;
      scanf("%d",&;;;;n);
      for(i=1;i<=3;i++){
        dfs(i,1,ans);
      }
      system("pause");
      return 0;
    }
    

    思路:普通的dfs三层,不超时。

    主要需要考虑的是最后的判断。计算。

  • 相关阅读:
    Lookup注解
    解决数据量大,分页查询慢的方案
    一个http的请求分析
    MYSQL
    什么是性能优化
    编码规范随笔
    装饰者模式
    单例模式
    J.U.C并发包(1)
    Java内存模型
  • 原文地址:https://www.cnblogs.com/nbalive2001/p/2597422.html
Copyright © 2011-2022 走看看