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;
    }
     

  • 相关阅读:
    信号量Semaphore的使用
    Future和FutureTask
    阻塞队列和线程池
    Java多线程基础
    Java常用方法
    Scanner和BufferedReader的区别和用法
    QT学习笔记9:QTableWidget的用法总结
    WordPress 建站教程:新手搭建 WordPress个人博客图文教程(完全版)
    Let's do it
    jdk alternatives
  • 原文地址:https://www.cnblogs.com/ACWQYYY/p/4455379.html
Copyright © 2011-2022 走看看