zoukankan      html  css  js  c++  java
  • 随便写写的搜索

    今天班上的女孩子问我两道搜索题,感觉自己好快,,,好久没这么自信过了 !!   

    第一题是这样的

    给定两个数n    m问把n拆成m个数相加

    输出方案数,只记得n,m都不大

    下面贴一下代码

     #include<iostream>
    using namespace std;
    int n,k;
    long r;
    void dfs(int a,int b,int n)
    {
         long m;
         if(a==k){
              r++;
              return ;
         }
         for(m=b;m<=n/2;m++)
         dfs(a+1,m,n-m);
    }
    int main()
    {
         while(cin>>n>>k){
             r=0;
           dfs(1,1,n);
           cout<<r<<endl;
         }
         return 0;
    }
    第二题好像有点意思,输入n,输入它的全排列

    比如输入3

    输出

    1 2 3

    1 3 2

    2 1 3

    2 3 1

    3 1 2

    3 2 1

    #include <bits/stdc++.h>
    bool vis[20];
    int a[20];
    int n;
    void dfs(int cur)
    {
        int i,j;
        if(cur==n+1){
            for(i=1;i<=n;i++){
               printf("%d",a[i]);
            }
            printf(" ");
        }
        else{
           for(i=1;i<=n;i++){
              if(!vis[i]){
                 a[cur]=i;
                 vis[i]=1;
                 dfs(cur+1);
                 vis[i]=0;
              }
           }
        }
    }
    int main()
    {
        while(scanf("%d",&n)!=EOF){
           dfs(1);
        }
        return 0;
    }
     

  • 相关阅读:
    BZOJ4245: [ONTAK2015]OR-XOR(前缀和)
    [HDU 4433]locker[DP]
    近期刷题的c语言总结。
    《BackboneJS框架的技巧及模式》(4)完结篇
    x+2y+3z=n的非负整数解数
    [置顶] 程序员看婚姻
    BNU29368:Check the Identity(栈)
    Python解决codeforces ---- 1
    带你走进EJB--MDB实现发送邮件(3)
    JIRA简介
  • 原文地址:https://www.cnblogs.com/ACWQYYY/p/4455379.html
Copyright © 2011-2022 走看看