zoukankan      html  css  js  c++  java
  • 啊哈算法_全排列

    //小哈面前有三个箱子,手上有1,2,3三张牌,规定能放小牌就放小牌,小哈放完最后一个箱子后,最后在箱子的牌能有几种排列?
    #include <iostream>
    #include <cstdio>
    
    using namespace std;
    int a[10],book[10],n;
    void dfs(int step) //step表示站在第几个盒子面前
    {
        int i;
        if(step==n+1)
        {
            for(i=1;i<=n;i++)
                cout<<a[i];
            cout<<endl;
                  return ;//返回之前一次调用dfs函数的地方
        }
        //此时站在第step个盒子面前,应该放那张牌呢?
        //按照1、2、3、、、、n的顺序一一尝试
        for(i=1;i<=n;i++)
        {
            if(book[i]==0)
            {
                a[step]=i;
                book[i]=1;
                //第step个盒子已经放好扑克牌,接下来需要走到下一个盒子面前
                dfs(step+1);
                book[i]=0;//关键收回纸牌
            }
        }
        return ;
    }
    
    int main()
    {
        scanf("%d",&n);
        dfs(1);
    
        return 0;
    }
    


    深度优先搜索的基本模型

                             void dfs(int step)

                         {

       判断边界

     尝试每一种可能     for(i=1;i<=n;i++){

          继续下一步         dfs(step+1);

                                       }

                                       返回

                               }

           

  • 相关阅读:
    网页布局——table布局
    Flex 布局——语法属性详解
    CSS实现垂直居中的几种方法
    svn:冲突(<<<<<<.mine ==== >>>>>>.xxxx)
    mysql:4种时间类型
    js:"use strict"; 严格模式
    js函数的Json写法
    spring 官方文档
    mybatis技术文章
    java:可变参数(转载)
  • 原文地址:https://www.cnblogs.com/zhangmingzhao/p/7256420.html
Copyright © 2011-2022 走看看