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. JS控制图片显示的大小(图片等比例缩放)

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  2. 如何在ubuntu中启用SSH服务

    如何在ubuntu14.04 中启用SSH服务 开篇科普:  SSH 为 Secure Shell 的缩写,由 IETF 的网络工作小组(Network Working Group)所制定:SSH 为 ...

  3. [webgrid] – selecterow - (Get Selected Row from ASP.NET MVC 3 WebGrid)

    Get Selected Row from ASP.NET MVC 3 WebGrid Abstract: The following article demonstrates how to get ...

  4. ul li 下的元素内容垂直居中

    CSS: <style> * {;; } li { list-style: none; } li span { border: 1px solid red; height: 100px; ...

  5. php去掉字符串的最后一个字符附substr()的用法

    转自:http://www.jb51.net/article/26604.htm 今天项目中用到,去掉字符串中的最后一个字符 原字符串1,2,3,4,5,6, 去掉最后一个字符"," ...

  6. CF460D Little Victor and Set (找规律)

    D - Little Victor and Set Codeforces Round #262 (Div. 2) D D. Little Victor and Set time limit per t ...

  7. Roslyn词法分析器初使用

    需:install-package:Microsoft.CodeAnalysis ];         NamespaceDeclarationSyntax NameSpaceDeclaration  ...

  8. IE打开报错,提示该内存不能为read的解决办法!

    由于最近我遇到过一次浏览器打不开的情况,出错的错误提示为 浏览器错误:“0x5ddfddac”指令引用的“0x00000020”内存,该内存不能为read经过杀毒及IE修复均不能解决!(没试过360急 ...

  9. iOS之下拉放大,上推缩小,一个方法搞定

    先来看看效果吧. 讲讲大概的实现思路:1、创建头部的视图和tableview,需要注意的是tableview要设置contentInset,contentInsent 的顶部要和头部视图的背景图的高度 ...

  10. 学习(主题或切入点)checklist1

    业务+技术+架构+运维+管理 技术学习:http://www.runoob.com/mongodb/mongodb-query.html 一.技术篇​补充学习列表 1,mongodb(o) 2,red ...