zoukankan      html  css  js  c++  java
  • USACO Zero Sum

    想练练自己的深搜,倔强的不愿意for循环来搞。写了五个参数的dfs最后ac掉了。最先我写的是两个参数的,因为没看清题意以为求的是解的总数,后来才知道要打印出所有解。参数一直加,直到加了五个参数。我的dfs很烂。但慢慢写总会好的。

    View Code
    #include <algorithm>
    #include <iostream>
    #include <cstdlib>
    #include <cstring>
    #include <string>
    #include <cstdio>
    #include <vector>
    
    using namespace std;
    int n,ans,sum;
    char s[100];
    
    void dfs(int cur,int sum,int len,int fa,int last)
    {
        s[len]=cur+'0';
        if(cur==n)
        {
            if(sum==0)
                printf("%s\n",s);
            return;
        }
        for(int i=0;i<3;i++)
        {
            if(i==0)
            {
                len++;
                s[len]=' ';
    
                if(fa==-1)
                    dfs(cur+1,sum*10+cur+1,len+1,fa,last);
    
    //            else if(fa==0)
    //                dfs(cur+1,sum*10+cur+1,len+1,fa);
    
                else if(fa==1)
                    dfs(cur+1,sum-last+(last*10+cur+1),len+1,fa,last*10+cur+1);
    
                else if(fa==2)
                    dfs(cur+1,sum+last-(last*10+cur+1),len+1,fa,last*10+cur+1);
                len--;
            }
            if(i==1)
            {
                len++;
                s[len]='+';
                dfs(cur+1,sum+cur+1,len+1,i,cur+1);
                len--;
            }
            if(i==2)
            {
                len++;
                s[len]='-';
                dfs(cur+1,sum-cur-1,len+1,i,cur+1);
                len--;
            }
        }
        len--;
    }
    
    int main()
    {
        while(~scanf("%d",&n))
        {
            ans=sum=0;
            memset(s,0,sizeof(s));
            dfs(1,1,0,-1,0);
        }
        return 0;
    }

    相信大家有更容易的做法,请多多指教。。

  • 相关阅读:
    paraview添加vector
    origin横纵坐标颠倒
    [转] python提取计算结果的最大最小值及其坐标
    康奈尔大学CFD课程
    anaconda多环境配置
    mfix的Negative gas density报错解决
    python基础补漏-01
    ssh 公钥登陆的问题
    多进程
    关于GIL
  • 原文地址:https://www.cnblogs.com/RainingDays/p/2944026.html
Copyright © 2011-2022 走看看