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

  • 相关阅读:
    6种GET和POST请求发送方法
    微信公众平台开发框架推荐
    PHPExcel内存泄漏问题
    7个鲜为人知却超实用的PHP函数
    java调用C程序
    php AES加密 对应Java SHA1PRNG方式加密
    yii插入数据库防并发
    PHPUnit测试
    yii2源码学习笔记(二十)
    yii2源码学习笔记(十九)
  • 原文地址:https://www.cnblogs.com/ACWQYYY/p/4455379.html
Copyright © 2011-2022 走看看