n全排列输出和 n个数的组合(数字范围a~b)
- 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)的更多相关文章
- 有n个数,输出其中所有和为s的k个数的组合。
分析:此题有两个坑,一是这里的n个数是任意给定的,不一定是:1,2,3...n,所以可能有重复的数(如果有重复的数怎么处理?):二是不要求你输出所有和为s的全部组合,而只要求输出和为s的k个数的组合. ...
- 输入n个数组,数组长度不等,每个数组取出一个数进行组合,求出所有的组合。
转载声明:原文转自http://www.cnblogs.com/xiezie/p/5511707.html 昨天晚上,有个朋友找到我,他在用matlab编程,但是遇到一个问题,解决不了. 问题如下: ...
- 找出n个自然数(1,2,3,……,n)中取r个数的组合
<?php /** * 对于$n和$r比较小, 可以用这种方法(当n=5, r=3时) */ function permutation1($n, $r) { for($i=1; $i<=$ ...
- hdu 1856 求集合里元素的个数 输出最大的个数是多少
求集合里元素的个数 输出最大的个数是多少 Sample Input41 23 45 61 641 23 45 67 8 Sample Output42 # include <iostream&g ...
- JS实现的数组全排列输出算法
本文实例讲述了JS实现的数组全排列输出算法.分享给大家供大家参考.具体分析如下: 这段js代码对数组进行全排列输出,改进了一些老的代码 从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来, ...
- C语言:计算并输出给定10个数的方差。
//计算并输出给定10个数的方差. #include<math.h> #include<stdio.h> ]) { double p = 0.0,f=0.0,g=0.0; ; ...
- C语言:输入一个数,输出比这个数小的所有素数,并求出个数。
//C语言:输入一个数,输出比这个数小的所有素数,并求出个数. #include<conio.h> #include<stdio.h> #include<stdlib.h ...
- java实现全排列输出
java实现全排列输出 转自:http://easonfans.iteye.com/blog/517286 最近在找工作,面试java程序员或者软件工程师,在笔试的时候常常见到这么一道题:全排列 的输 ...
- 编写一个算法,将非负的十进制整数转换为其他进制的数输出,10及其以上的数字从‘A’开始的字母表示
编写一个算法,将非负的十进制整数转换为其他进制的数输出,10及其以上的数字从‘A’开始的字母表示. 要求: 1) 采用顺序栈实现算法: 2)从键盘输入一个十进制的数,输出相应的八进制数和十六进制数. ...
随机推荐
- JS通过getBoundingClientRect获取的height可能与css设置的height不一致
发现如果DOM元素有padding-top或者padding-bottom值时, $(dom).height() = dom.style.display + padding-top + padding ...
- CLR 公共语言运行库
1..支持多语言..只是语言是面向CLR的..均可以在此基础上运行. 2..程序集加载..程序打包之后的Dll文件由CLR(公共语言运行库)来编译并加载到可以执行状态..由CLR(公共语言运行库)加载 ...
- Orchard源码分析(2):Orchard.Web.MvcApplication类(Global)
概述 分析一个的ASP.NET项目源码,首先可以浏览其项目结构,大致一窥项目其全貌,了解项目之间的依赖关系.其次可以浏览Web.config和Global.asax文件,找到应用程序的入口点. 本 文 ...
- MySQL关键字(保留字)列表
在使用MySQL的时候,一般尽量避免用关键字作为表名,如使用关键字做表名,需要按标准写法给SQL语句加[](或是“)区分字段名和表名. 下面列出MySQL所有关键字,希望给使用MySQL的朋友提供一些 ...
- monit 监控并自动重启服务
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://coolerfeng.blog.51cto.com/133059/50126 Mo ...
- 删除多个Safari书签
Safari 的书签多了,删除起来很麻烦,可以先选中所有书签,然后再按"Command+Delete",就可以全部删除了.
- php的exit和die
首先, 两者是相等的: exit is equivalent to die; 其次, 都是语言构造器, language construct. 不是函数! 后面的内容用括号括起来只是为了方便... 用 ...
- 关于动态URL地址设置静态形式
动态URL地址:http://station.com/index.php?c=play&a=index&id=12345 静态URL地址:http://station.com/play ...
- Highcharts X轴名称太长,如何设置下面这种样式
Highcharts所有的图表除了饼图都有X轴和Y轴,默认情况下,x轴显示在图表的底部,y轴显示在左侧(多个y轴时可以是显示在左右两侧),通过chart.inverted = true 可以让x, ...
- sql server cpu占用过高优化
SQLSERVER排查CPU占用高的情况 今天中午,有朋友叫我帮他看一下数据库,操作系统是Windows2008R2 ,数据库是SQL2008R2 64位 64G内存,16核CPU 硬件配置还是比较高 ...