生成1~n的排列
来源:互联网 发布:淘宝无线详情视频教程 编辑:程序博客网 时间:2024/05/22 17:37
#include<stdio.h>void print_permutation(int n, int * A, int cur){//cur已经填好的位置个数 if(cur == n){//递归边界 for(int i = 0; i<n; i++) printf("%d ",A[i]); printf("\n"); }else for(int i = 1; i <= n; i++){//尝试在A[cur]中填各种整数i int ok = 1; for(int j=0; j<cur; j++) if(A[j] == i) ok=0;//如果i已经在A[0]~A[cur-1]中填各种整数i if(ok){ A[cur]=i; print_permutation(n, A, cur+1);//递归调用 } }}int main(){ int A[1000]; print_permutation(5,A,0); return 0;}
<pre name="code" class="cpp">#include<stdio.h>int P[3] = {1,1,1};void print_permutation(int n, int * A, int cur){ if(cur == n){ for(int i=0; i<n; i++) printf("%d ",A[i]); printf("\n"); } else for(int i=0; i<n; i++) if(!i||P[i]!=P[i-1])//由于P数组已经排序,只需检查第一个元素和所有的“与前一个元素不相同”的元素 { int ok=1, c1=0, c2=0; for(int j=0; j<cur; j++) if(A[j] == P[i]) c1++; for(int j=0; j<n; j++) if(P[j] == P[i]) c2++; //c1c2的作用是防止出现重复数字。 if(c1 < c2) { A[cur]=P[i]; print_permutation(n,A,cur+1); } }}int main(){ int A[1000]; print_permutation(3,A,0); return 0;}
0 0
- 生成1~n的排列
- 生成1~n的排列
- 生成1-n的排列
- 生成1-n的排列
- 生成1~n的排列
- 生成1~n的排列
- 生成1~n的排列
- 生成1~n的排列
- 生成1~n的排列
- 生成1~n的排列和生成可重集的排列
- 生成1~n的排列,以及生成可重集的排列
- 生成1~n排列
- 生成1-n排列
- 暴力法生成1~n的排列
- 生成1~~n的排列 && 子集
- 生成1~n的全排列
- 算法--生成1~n的排列
- 生成1-n的全排列
- 使用HiRedis在开发过程中需要注意的事情
- App Store idfa被拒检查办法
- 扁平化设计:赶一种叫“简约”的时髦
- JSP六个动作详解
- 程序员自我修养第三章__链接.
- 生成1~n的排列
- 如何强制调用OnPaint
- Android笔记---多线程之handler(旧)
- Android学习:UI线程阻塞post解决方案
- range 写的小时钟
- Windows英文版GitHub客户端使用操作流程图文攻略教程现没中文版
- android插件化开发相关开源资料
- ios-day06-02(UITableView常见属性、UITableViewCell的常见属性、性能优化等)
- android Camera 如何判断当前使用的摄像头是前置还是后置