Chinaunix首页 | 论坛 | 博客
  • 博客访问: 326962
  • 博文数量: 63
  • 博客积分: 2344
  • 博客等级: 大尉
  • 技术积分: 628
  • 用 户 组: 普通用户
  • 注册时间: 2009-05-13 11:09
个人简介

有一种沉默叫霸气,有一种内敛叫个性,有一种简单叫深遂,有一种不屑叫自我

文章分类

全部博文(63)

文章存档

2013年(10)

2012年(12)

2011年(1)

2010年(9)

2009年(31)

分类: C/C++

2010-03-15 14:54:42

这类问题其实跟M进制是同一个问题。
 
int
permutation(int pos, int cycle)
{
    int res_row = (int)pow(cycle, pos);
    int array_result[res_row][pos];     /*存储排列结果*/
    int i = 0, j;
    for(j = 0; j < pos; j++){
        array_result[0][j] = 1;   /*0或是1就是表示起始的第一个数*/
    }
    print_row(0);                 /*显示每行*/
    for(i = 1; i < res_row; i++){
        for(j = 0; j < pos; j++){    /*继承上一次排列结果*/
            array_result[i][j] = array_result[i - 1][j];
        }
        j--;
        array_result[i][j]++;     /*最外的位置增1*/
        while(array_result[i][j] > cycle){    /*逐层向内调整每一层*/
            array_result[i][j] = 1;
            array_result[i][--j]++;
        }
    print_row(i);
    }
  return 0;
}
 
    如果想实现M进制的话,就把数组中的一行组织成一个数就OK了!
阅读(1011) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~