zoukankan      html  css  js  c++  java
  • 排列组合数

      1 #include<stdio.h>
      2 #include<string.h>
      3 int a[10],m,n;
      4 
      5 //取数算法
      6 
      7 
      8 /*1、从m中选出n个全排列,从大到小,不允许重复
      9 
     10 3 2   输入
     11 
     12 32
     13 31
     14 21
     15 
     16 */
     17 void fun1(int m,int n)
     18 {
     19     int i,j;
     20     for(i=m;i>0;i--)
     21     {
     22         a[n]=i;
     23         if(n>1)
     24             fun1(i-1,n-1);
     25         else
     26         {
     27             for(j=a[0];j>0;j--)
     28                 printf("%d",a[j]);
     29             printf("\n");
     30         }
     31     }
     32 }
     33 
     34 
     35 /*2、从m中选出n个全排列,从大到小,允许重复
     36 
     37 3 2   输入
     38 
     39 33
     40 32
     41 31
     42 22
     43 21
     44 11
     45 
     46 */
     47 void fun2(int m,int n)
     48 {
     49     int i,j;
     50     for(i=m;i>0;i--)
     51     {
     52         a[n]=i;
     53         if(n>1)
     54             fun2(i,n-1);
     55         else
     56         {
     57             for(j=a[0];j>0;j--)
     58                 printf("%d",a[j]);
     59             printf("\n");
     60         }
     61     }
     62 }
     63 /*3、从m中选出n个全排列,从小到大,不允许重复
     64 
     65 3 2   输入
     66 
     67 12
     68 13
     69 23
     70 
     71 */
     72 void fun3(int u,int v)
     73 {
     74     int i,j;
     75     for(i=u;i<=m;i++)
     76     {
     77         a[v]=i;
     78         if(v<n)
     79             fun3(i+1,v+1);
     80         else
     81         {
     82             for(j=1;j<=a[0];j++)
     83                 printf("%d",a[j]);
     84             printf("\n");
     85         }
     86     }
     87 }
     88 /*4、从m中选出n个全排列,从小到大,允许重复
     89 
     90 3 2   输入
     91 
     92 11
     93 12
     94 13
     95 22
     96 23
     97 33
     98 
     99 */
    100 void fun4(int u,int v)
    101 {
    102     int i,j;
    103     for(i=u;i<=m;i++)
    104     {
    105         a[v]=i;
    106         if(v<n)
    107             fun4(i,v+1);
    108         else
    109         {
    110             for(j=1;j<=a[0];j++)
    111                 printf("%d",a[j]);
    112             printf("\n");
    113         }
    114     }
    115 }
    116 
    117 
    118 // 给定一个数
    119 
    120 /*给定一个数求这个数的从小到大的全排列,不许重复
    121 
    122 3  输入
    123 
    124 123
    125 132
    126 213
    127 231
    128 312
    129 321
    130 */
    131 void fun5(int u)
    132 {
    133     int i,j,ok;
    134     if(u==m)
    135     {
    136         for(i=0;i<m;i++)
    137             printf("%d",a[i]);
    138         printf("\n");
    139     }
    140     else
    141         for(i=1;i<=m;i++)  //for(i=m;i>0;i--)  即从大到小
    142         {
    143             ok=1;
    144             for(j=0;j<u;j++)
    145                 if(a[j]==i)
    146                     ok=0;
    147                 if(ok)
    148                 {  
    149                     a[u]=i;
    150                     fun5(u+1);
    151                 }
    152         }
    153 }
    154 
    155 /*给定一个数求这个数的从小到大的全排列,不许重复
    156 2  输入
    157 
    158 11
    159 12
    160 21
    161 22
    162 
    163 
    164 */
    165 void fun6(int u)
    166 {
    167     int i;
    168     if(u==m)
    169     {
    170         for(i=0;i<m;i++)
    171             printf("%d",a[i]);
    172         printf("\n");
    173     }
    174     else
    175         for(i=1;i<=m;i++)  //for(i=m;i>0;i--)  即从大到小
    176         {
    177                    a[u]=i;
    178                     fun6(u+1);
    179         }
    180 }
    181             
    182 /*int main()
    183 {
    184     while(scanf("%d%d",&m,&n)!=EOF)
    185     {
    186         a[0]=n;
    187         fun1(m,n);
    188         fun2(m,n);
    189         fun3(1,1);
    190         fun4(1,1);
    191     
    192     }
    193     return 0;
    194 }*/
    195 
    196 int main()
    197 {
    198     while(scanf("%d",&m)!=EOF)
    199         fun6(0);    
    200     return 0;
    201 }
  • 相关阅读:
    JavaWeb学习笔记(3)
    JavaWeb学习笔记(2)
    JavaWeb学习笔记(1)
    Java学习笔记(20)
    Java学习笔记(19)
    Java学习笔记(18)
    Java学习笔记(17)
    Java学习笔记(16)
    Java学习笔记(15)
    Java学习笔记(14)
  • 原文地址:https://www.cnblogs.com/xiaofanke/p/2790800.html
Copyright © 2011-2022 走看看