zoukankan      html  css  js  c++  java
  • 枚举排列各种思路代码

    1.生成1-n的排列 递归法

     1 #include<stdio.h>
     2 int A[100];
     3 // 输出1~n的全排列
     4 void print_permutation(int n, int* A, int cur) {
     5   int i, j;
     6   if(cur == n) { // 递归边界
     7     for(i = 0; i < n; i++) printf("%d", A[i]);
     8     printf("\n");
     9   } else for(i = 1; i <= n; i++) { // 尝试在A[cur]中填各种整数i
    10     int ok = 1;
    11     for(j = 0; j < cur; j++)
    12       if(A[j] == i) ok = 0; // 如果i已经在A[0]~A[cur-1]出现过,则不能再选
    13     if(ok) {
    14       A[cur] = i;
    15       print_permutation(n, A, cur+1); // 递归调用
    16     }
    17   }
    18 }
        //有点小疑问是对于这一个大数组A每次更新时把以前的数覆盖然后一直输出!!
    19 int main() { 20 print_permutation(6, A, 0); 21 return 0; 22 }
  • 相关阅读:
    第十次作业
    java第九次作业
    优秀的计算机编程类博客 和 文章
    SQLAlchemy使用总结
    Go Web
    beego
    项目注意事项
    爬虫
    Linux笔记
    计算机英语
  • 原文地址:https://www.cnblogs.com/cgf1993/p/3059566.html
Copyright © 2011-2022 走看看