<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont

在线体验各类最新模型,更有模型 免费Token 额度领取!
立即体验
简介: 例如:12的全排列是12、21,123的全排列是123、132、213、231、312、321。依次类推:1234的全排列是……… 在123 的全排列中,我们使用3个盒子存放即将放进的数字,每当走到一个盒子前就把手中的数字放进去,手中的数字没了之后,再次返回,把盒子中的数字拿走,再次进行排列。
  • 例如:12的全排列是12、21,123的全排列是123、132、213、231、312、321。依次类推:1234的全排列是………
  • 在123 的全排列中,我们使用3个盒子存放即将放进的数字,每当走到一个盒子前就把手中的数字放进去,手中的数字没了之后,再次返回,把盒子中的数字拿走,再次进行排列。如此复杂的排列,如何使用程序解决呢?
  • 首先应该使用一个数组book来标记哪些牌已经使用了。
    for(i=1;i<=n;i++){
       if(book[i]==0){
         a[step]=i;
         book[i]=1;
       }
    }
  • 深度度优先搜索(Depth First Search ,DFS)的关键在于解决“当下该如何做”,至于“下一步如何做”则与“当下该如何做”是一样的。发明深度优先算法的是John E.Hopcroft(约翰.霍普克罗夫特)和RobertE.Tarjan(罗伯特.陶尔扬)。1971-1972他们在斯坦福大学研究图的连通性和平面性的边相互不交叉。在电路板上设计布线的时候,发现的这个奇妙的算法。
  • 程序代码如下:
 #include<iostream>
using namespace std;
int a[10],book[10],n;
void dfs(int step){
    int i;
    if(step==n+1){
        for(i=1;i<=n;i++){
            cout<<a[i];
        }
        cout<<endl;
        return ;
    }
    for(int i=1;i<=n;i++){
        if(book[i]==0){
            a[step]=i;
            book[i]=1;
            dfs(step+1);
            book[i]=0;//这一步非常重的,一定要将刚才尝试的扑克牌收回,才能进行下次的尝试。
        }
    }
}
int main(){
    cin>>n;
    dfs(1);
}
目录
相关文章
|
Web App开发 前端开发
|
Web App开发 前端开发 算法
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
基于大数据的精准营销与应用场景 2015年08月11日 大数据 大数据营销时代来临营销学领域过去半个多世纪的发展让我们见证了从“以产品为中心”到“以客户为中心”的转变。
1133 0
|
SQL Web App开发 前端开发
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
     如果在INSERT语句末尾指定了ON DUPLICATE KEY UPDATE,并且插入行后会导致在一个UNIQUE索引或PRIMARY KEY中出现重复值,则在出现重复值的行执行UPDATE;如果不会导致唯一值列重复的问题,则插入新行。
965 0
|
Web App开发 前端开发
|
数据库
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
CentOS 6.5安装配置ldap 时间:2015-07-14 00:54来源:blog.51cto.com 作者:“ly36843运维” 博客 举报 点击:274次 一.
1095 0
|
Web App开发 前端开发 大数据
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
一、概述   多维数据模型是最流行的数据仓库的数据模型,多维数据模型最典型的数据模式包括星型模式、雪花模式和事实星座模式,本文以实例方式展示三者的模式和区别。
912 0
|
Web App开发 前端开发
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
一个典型的星型模式包括一个大型的事实表和一组逻辑上围绕这个事实表的维度表。  事实表是星型模型的核心,事实表由主键和度量数据两部分组成。
679 0
|
Web App开发 前端开发 Java
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
Runnable:一般指该线程正在执行状态中,该线程占用了资源,正在处理某个请求,例如有可能在对某个文件操作,有可能进行数据类型等转换。
743 0
|
Web App开发 Java
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
                                                                                序列化对单例的破坏 本文将通过实例+阅读Java源码的方式介绍序列化是如何破坏单例模式的,以及如何避免序列化对单例的破坏。
1090 0

热门文章

最新文章