n全排列输出:

int WPermutation(int num, bool bRepeat)
num表示num全排列 bRepeat标志是否产生重复元素的序列。 int Permutation(int n, int* A, int cur, bool bRepeat)
{
static int number = 0;
if(cur == n)
{
number++;
for(int i = 0; i< n; i++)
{
printf("%d ", A[i]);
}
printf("\n");
}
else
{
for(int i = 1; i <= n; i++)
{
int ok = 1;
for(int j = 0; j < cur; j++)
{
if(!bRepeat)
{
if(A[j] == i)
{
ok = 0;
}
}
} if(ok)
{
A[cur] = i;
Permutation(n, A, cur + 1, bRepeat);
} }
} return number;
}
int WPermutation(int num, bool bRepeat)
{
printf("%d permutation(%s): %d ~ %d\n", num, bRepeat?"repeat mode":"single mode", 1, num);
int n = num;
int *A = (int*)malloc(n*sizeof(int));
memset(A, 0, sizeof(n*sizeof(int)));
int cur = 0;
int number = Permutation(n, A, cur, bRepeat);
delete [] A ;
A = NULL;
printf("over!\n");
return number; } int Wpermutation(int st, int en, int n, bool bRepeat);
n个数的组合(数字范围st~en),考虑重复元素: n表示n个数字组合 每个数字范围:st~en bRepeat标志是否产生重复元素的序列。 int Permutation(int st, int en, int n, int* A, int cur, bool bRepeat)
{
static int number = 0; if(cur == n)
{
number++;
for(int i = 0; i< n; i++)
{
printf("%d ", A[i]);
}
printf("\n");
}
else
{
for(int i = st; i <= en; i++)
{
int ok = 1;
for(int j = 0; j < cur; j++)
{
if(!bRepeat)
{
if(A[j] == i)
{
ok = 0;
}
}
} if(ok)
{
A[cur] = i;
Permutation(st, en, n, A, cur + 1, bRepeat);
} }
} return number;
} int Wpermutation(int st, int en, int n, bool bRepeat)
{
printf("%d permutation(%s): %d ~ %d\n", n, bRepeat?"repeat mode":"single mode", st, en);
int num = en - st + 1;
if(n > num)
{
bRepeat = true;
printf("too many number, to be repeat mode:\n");
} int *A = (int*)malloc(n*sizeof(int));
memset(A, 0, sizeof(n*sizeof(int)));
int cur = 0;
int number = Permutation(st, en, n, A, cur, bRepeat);
delete [] A ;
A = NULL;
printf("over!\n");
return number;
}

  

n全排列输出和 n个数的组合(数字范围a~b)的更多相关文章

  1. 有n个数,输出其中所有和为s的k个数的组合。

    分析:此题有两个坑,一是这里的n个数是任意给定的,不一定是:1,2,3...n,所以可能有重复的数(如果有重复的数怎么处理?):二是不要求你输出所有和为s的全部组合,而只要求输出和为s的k个数的组合. ...

  2. 输入n个数组,数组长度不等,每个数组取出一个数进行组合,求出所有的组合。

    转载声明:原文转自http://www.cnblogs.com/xiezie/p/5511707.html 昨天晚上,有个朋友找到我,他在用matlab编程,但是遇到一个问题,解决不了. 问题如下: ...

  3. 找出n个自然数(1,2,3,……,n)中取r个数的组合

    <?php /** * 对于$n和$r比较小, 可以用这种方法(当n=5, r=3时) */ function permutation1($n, $r) { for($i=1; $i<=$ ...

  4. hdu 1856 求集合里元素的个数 输出最大的个数是多少

    求集合里元素的个数 输出最大的个数是多少 Sample Input41 23 45 61 641 23 45 67 8 Sample Output42 # include <iostream&g ...

  5. JS实现的数组全排列输出算法

    本文实例讲述了JS实现的数组全排列输出算法.分享给大家供大家参考.具体分析如下: 这段js代码对数组进行全排列输出,改进了一些老的代码 从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来, ...

  6. C语言:计算并输出给定10个数的方差。

    //计算并输出给定10个数的方差. #include<math.h> #include<stdio.h> ]) { double p = 0.0,f=0.0,g=0.0; ; ...

  7. C语言:输入一个数,输出比这个数小的所有素数,并求出个数。

    //C语言:输入一个数,输出比这个数小的所有素数,并求出个数. #include<conio.h> #include<stdio.h> #include<stdlib.h ...

  8. java实现全排列输出

    java实现全排列输出 转自:http://easonfans.iteye.com/blog/517286 最近在找工作,面试java程序员或者软件工程师,在笔试的时候常常见到这么一道题:全排列 的输 ...

  9. 编写一个算法,将非负的十进制整数转换为其他进制的数输出,10及其以上的数字从‘A’开始的字母表示

    编写一个算法,将非负的十进制整数转换为其他进制的数输出,10及其以上的数字从‘A’开始的字母表示. 要求: 1) 采用顺序栈实现算法: 2)从键盘输入一个十进制的数,输出相应的八进制数和十六进制数. ...

随机推荐

  1. UML关系图

    在UML类图中,常见的有以下几种关系: 泛化(Generalization),  实现(Realization),关联(Association),聚合(Aggregation),组合(Composit ...

  2. osharpV3数据库初始化

    var databaseInitializer = new DatabaseInitializer(); databaseInitializer.MapperAssemblyFinder = new ...

  3. Why you shouldn't use Entity Framework with Transactions

    Links EntityFramework This is a .net ORM Mapper Framework from Microsoft to help you talking with yo ...

  4. 2015年12月10日 spring初级知识讲解(三)Spring消息之activeMQ消息队列

    基础 JMS消息 一.下载ActiveMQ并安装 地址:http://activemq.apache.org/ 最新版本:5.13.0 下载完后解压缩到本地硬盘中,解压目录中activemq-core ...

  5. WCF绑定类型选择

    WCF绑定类型选择   发布日期:2010年12月10日星期五 作者:EricHu   在开发WCF程序时,如何选择一个适合的绑定对于消息传输的可靠性,传输模式是否跨进程.主机.网络,传输模式的支持. ...

  6. Net上传附件大小控控值(转)

    Server Error 404 – File or directory not found. The resource you are looking for might have been rem ...

  7. soj4271 Love Me, Love My Permutation (DFS)

    4271: Love Me, Love My Permutation Description Given a permutation of n: a[0], a[1] ... a[n-1], ( it ...

  8. h5交互元素details标签

    details是h5新增的交互元素,details与 summary 标签配合使用可以为 details 定义标题.默认情况下,不显示 details 标记中的内容.当用户点击标题时,会显示出 det ...

  9. vim颜色选择+按<F9>自动编译运行+其他基本配置(ubuntu)

    (以下是ubuntu上的配置........ 但如果你是在window上的,直接用一下配置吧(懒得介绍了)=.= syntax on filetype indent plugin on set rul ...

  10. java系列-使用maven创建web项目(二)

    推荐2个maven找jar包配置的网站,只需要搜索关键字即可找到需要的Jar包,非常方便,比如:MySQL就可以找到mysql-connect-Java.jar. http://search.mave ...