Chinaunix首页 | 论坛 | 博客
  • 博客访问: 163947
  • 博文数量: 67
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 622
  • 用 户 组: 普通用户
  • 注册时间: 2014-11-19 19:12
文章分类

全部博文(67)

分类: C/C++

2014-12-26 14:25:25


   1、全排列
    #define N 3
    char arr[] = "abc";
    int printarr()
    {
        for(int i = 0; i         {
            cout<         }
        cout<     }
    int permutation(char *a, int n)
    {
        if(n == 1)
        {
            printarr();
            return 0;
        }
        for(int i = 0; i         {
            char c = a[0]; a[0]=a[i]; a[i]=c;
            permutation(a+1, n-1);
             c = a[0]; a[0]=a[i]; a[i]=c;  //恢复之前状态
        }
    }

    2、组合
    从N个中取M个的组合
    #define N 3
    #define M 2

    char arr[N] = "abc";
    char arrm[M];

    int printarr()
    {
        for(int i = 0; i)
        {
            cout<];
        }
        cout<
    }
    int combination(char *a, int n, int m)
    {
        if(m == 0)
        {
            printarr();
            return 0;
        }
        for(int i = n-1; i>=m-1; i--) //从后面开始,否则arrm[m-1]的下标每次减一不好实现
        {
            arrm[m-1]=a[i]; 
            combination(a, i, m-1);
        }
    }    
    
阅读(1577) | 评论(0) | 转发(0) |
0

上一篇:switch中定义变量

下一篇:Samba配置实例

给主人留下些什么吧!~~