zoukankan      html  css  js  c++  java
  • 数学趣题——数字的全排列

    应用递归思想求全排列

       1: #include <stdio.h>
       2: #define max 100
       3:  
       4: void Perm(int a[], int n , int s , int r[], int m)
       5: {
       6:     int i, j, k, flag = 0;
       7:     int b[max];                    /*数组b存放子序列*/
       8:  
       9:     for(i = 0; i < n; i++)
      10:     {
      11:         flag = 1;
      12:         r[s] = a[i];                /*复制数列a中第i个元素到数组r*/
      13:         j = 0;
      14:         for(k = 0; k < n; k++)      /*产生子序列b*/
      15:         {
      16:             if(i != k) 
      17:             {
      18:                 b[j] = a[k];
      19:                 j++;
      20:             }
      21:         }    
      22:         Perm(b, n - 1, s + 1, r, m); /*全排列子序列b*/
      23:     }
      24:  
      25:     if(flag == 0)
      26:     {               /*得到一种排列结果*/
      27:         printf("\n");
      28:         for(k = 0; k < m; k++)
      29:             printf("%d ", r[k]);       /*输出存放排列结果的数组r中的内容*/
      30:         printf("\n");
      31:     }
      32: }
      33:  
      34: int main()
      35: {
      36:     int a[max] , r[max];
      37:     int i, n;
      38:     printf("Please input the number of digit inthe array\n");
      39:     scanf("%d", &n);               /*输入待排列的数列中元素的个数*/
      40:     printf("Please input a string for array\n");
      41:     for(i = 0; i < n; i++)          /*输入数列中的元素(整数)*/
      42:         scanf("%d", &a[i]);
      43:     Perm(a, n, 0, r, n);            /*全排列操作*/
      44:     return 0;
      45: }
      46:  
  • 相关阅读:
    python函数嵌套的实用技术
    windows10 装linux子系统
    彻底测试全部拷贝list相关操作的区别python
    c语言学习
    Pickling
    Filenames and paths
    Format operator
    Reading and writing
    Persistence
    Automation testing tool comparison
  • 原文地址:https://www.cnblogs.com/steven_oyj/p/1744182.html
Copyright © 2011-2022 走看看