`
hulianwang2014
  • 浏览: 695010 次
文章分类
社区版块
存档分类
最新评论
  • bcworld: 排版成这样,一点看的欲望都没有了
    jfinal

一种生成排列的简单想法

 
阅读更多

对于生成n个数的排列,我们大家肯定都知道一种回朔的解法,这种解法就是根据8皇后得来的,当然,需要把冲突条件改一下就行.然而,我们现在要提的是另外一种方法,就是通过定义去写的一种算法.

显然,1的排列就是1;1,2的排列有1,2和2,1两个;现在我们考虑1,2,3这三个数的排列,显然,1,2,3这三个数的排列其实就是分以下三种情况:

1)把1放在第1位,剩下的就是2,3的两个数排列

2)把2放在第1位,剩下的就是1,3两个数排列

3)把3放在第1位,剩下的就是1,2两个数的排列

这种思想其实就是我们通常写出n个数的排列的一种思考过程,当然,对于n个数我们也可以考虑分成n种情况,与上面的类似而已.

这种算法实现起来非常简单,代码如下:

#include <iostream>
using namespace std;

void permutation(int* array, int iLength, int iCurStep);


int main(){
    int array[] = {1,2,3,4};
    permutation(array, 4, 0);
}

void permutation(int* array, int iLength, int iCurStep){
    if(iLength == iCurStep){
        for(int i = 0; i< iLength; ++i){
            cout<<array[i]<<' ';
        }
        cout<<endl;
        return;
    }
    for(int i= iCurStep; i< iLength; ++i){
        swap(array[i], *array);
        permutation(array, iLength, iCurStep+1);
        swap(array[i], *array);
    }
}
版本所有,如果需要转载,请标明出处,谢谢.

分享到:
评论

相关推荐

    asp.net知识库

    .NET20 一种简单的窗口控件UI状态控制方法 翻译MSDN文章 —— 泛型FAQ:最佳实践 Visual C# 3.0 新特性概览 C# 2.0会给我们带来什么 泛型技巧系列:如何提供类型参数之间的转换 C#2.0 - Object Pool 简单实现 ...

    visualizeData:Sea-C26 可视化数据结构的算法

    我发现似乎是一种插入排序算法,旨在在添加新元素后按字母顺序排列 li 元素。 // 我在 Slack 留言板上发布了我的作品,Craig Chaille 建议按“.width”排序,这使我能够实现能够按两个类排序的目标。

    CapsNet-vs-CNN:CapsNet与CNN:变化的特征空间排列的影响分析

    这里的想法是首先在第一个数据集上训练模型(三角形与矩形)。 训练完成后,应冻结卷积层,现在应在第二个数据集上重新训练同一模型。 脚步 使用python gen_data/gen_data.py生成数据集。 使用python train.py --...

    Saola Animate(html5动画制作软件) v2.0.3.zip

    精灵表是一个排列在一个位图图像文件中的各种图形的序列。由于精灵表,你可以创建一个动画人物代表一个或几个动画序列,而只需要加载一个文件。 4、自动关键帧 自动关键帧允许在创建动画时自动生成关键帧。因此,...

    http-request-smuggling:HTTP请求走私检测工具

    HTTP请求走私检测工具HTTP请求走私是一种高度严重的漏洞,该技术是攻击者通过模糊的HTTP请求走私以绕过安全控制并获得未经授权的访问权以执行恶意活动,该漏洞是在2005年由发现的,并于2019年8月重新发现。...

    SeqCalc:面向理论的Max4Live音序器计算器

    有人可能会认为集合方法是一种更纯粹的数学抽象,其中整数(及其排列)用于描述音乐,而不是主流,次要,主导等更传统的和声语言。艾伦·福尔特(Allen Forte)的重要工作,帮助加强了现代音乐中面向理论的分析。 ...

    2009计算机 毕业设计 诚信体育用品

    又称为网站内容发布系统,是将网页上的某些需要经常变动的信息,(如公司新闻、业界动态、公告等更新信息)集中管理,并通过信息的某些共性进行分类,最后系统化、标准化发布到网站上的一种网站应用程序。...

    Dinosaurs:Udacity-中级JavaScript-项目#1

    要完成此项目,您的后端代码必须: 包含一个类和所有必要的对象 包含至少三种比较恐龙与人类的方法 从DOM获取用户数据 将带有对象数据的图块附加到DOM超越本课程没有额外的功劳,但是,如果您打算在项目组合中使用...

    Linux操作系统基础教程

    GPL 是一种可以使你免费获得自由软件的许可证,因此 Linux 使用 者的使用活动基本不受限制(只要你不将它用于商业目的),而不必像使用微软产品是那样, 2需要为购满许可证付出高价还要受到系统安装数量的限制。我...

    网管教程 从入门到精通软件篇.txt

    Windows XP(包括 Windows 2000)的控制台命令是在系统出现一些意外情况下的一种非常有效的诊断和测试以及恢复系统功能的工具。小编的确一直都想把这方面的命令做个总结,这次辛苦老范给我们整理了这份实用的秘笈。 ...

Global site tag (gtag.js) - Google Analytics