zoukankan      html  css  js  c++  java
  • poj3187【dfs】

    挑战-搜索
    题意:
    给一个n和sum,代表n层的杨辉三角,然后给一个和,问最低层的数字情况。
    思路:
    ①:预处理一个底层对于和的系数数组,
    sum = 0Cn-1*num[1] + 1Cn-1*num[2] +…+ n-1Cn-1*num[n];
    ②:因为底层就是1-n直接暴搜…即可…
    贴一发挫code………

    #include<cstdio>
    #include<map>
    #include<queue>
    #include<math.h>
    #include<string.h>
    #include<algorithm>
    using namespace std;
    #define eps 1e-8
    typedef __int64 LL;
    
    // 杨辉三角第n层第k个数记为Ckn
    
    // 那么=n!/[k!(n-k)!]=n * (n – 1)…*(n – k + 1) / k!
    
    //sum = 0Cn-1*num[0] + 1Cn-1*num[1] +``+ n-1Cn-1*num[n-1]
    
    
    const int N=12;
    
    int c[N];
    int num,n;
    bool vis[N];
    int d[N],flag;
    
    int cal(int x)
    {
        int i=1,ans=1;
        int t=n-1;
        while(i<=x)
        {
            ans=ans*t/i;
            t--;i++;
        }
        return ans;
    }
    
    void dfs(int x,int sum)
    {
        if(flag) return;
        if(sum>num) return;
        if(x==n)
        {
            if(sum==num&&!flag)
            {
                flag=1;
                for(int i=0;i<n;i++)
                {
                    if(i) printf(" ");
                    printf("%d",d[i]);
                }
                flag=1;
            }
            return;
        }
    
        for(int i=1;i<=n;i++)
        {
            if(!vis[i])
            {
                d[x]=i;
                vis[i]=1;
                dfs(x+1,sum+i*c[x+1]);
                vis[i]=0;
            }
        }
    }
    
    
    int main()
    {
        scanf("%d%d",&n,&num);
        for(int i=1;i<=n;i++)
            c[i]=cal(i-1);
    
    
    //    for(int i=1;i<=n;i++)
    //        printf("%d ",c[i]);
    
        memset(vis,0,sizeof(vis));
        flag=0;
        dfs(0,0);
        return 0;
    }
    
  • 相关阅读:
    Excel VBA宏 链接服务器 上传和下载数据
    SQL IF while 游标
    关于SQL while 循环嵌套 外部循环数据无法进入内部循环
    SQL中读取Excel 以及 bpc语言
    安装zabbix及LNMP的平台的搭建
    MySQL的储存过程
    zabbix添加客户端
    ossec日志文件的安装
    find常用参数详解
    Liunx的备份
  • 原文地址:https://www.cnblogs.com/keyboarder-zsq/p/5934885.html
Copyright © 2011-2022 走看看