Chinaunix首页 | 论坛 | 博客
  • 博客访问: 81195
  • 博文数量: 42
  • 博客积分: 687
  • 博客等级: 上士
  • 技术积分: 425
  • 用 户 组: 普通用户
  • 注册时间: 2007-08-01 15:39
文章分类

全部博文(42)

文章存档

2011年(12)

2010年(30)

分类:

2010-09-09 14:36:00

#include

#define IN
#define OUT

#define ARRAY_SIZE 7
#define SELECT_NUM 3

using std::cout;
using std::endl;

template
void PermAndComb(const T *arr, const int size, const int len, int index = 0)
{
 int *arrResult = new int[len];
 for(int i=0; i  arrResult[i] = i;
 
 while(true){
  int cur = len - 2;
  while(arrResult[len-1]   Display(arr, arrResult, len);
   arrResult[len-1]++;
  }
  for(; cur>=0; cur--){
   if(arrResult[cur]+1    ++arrResult[cur];
    for(int i=cur+1; i     arrResult[i] = arrResult[i-1] + 1;
    break;
   }
  }
  if(cur<0){
   delete []arrResult;
   return;
  }
 }
}

template
void Display(const T *arr, const int *arrIndex, const int size)
{
 for(int i=0; i  cout << arr[arrIndex[i] ] << '\t';
 cout << endl;
}

int main(void)
{
 int arr[ARRAY_SIZE];
 for(int i=0; i  arr[i] = i + 1;
 PermAndComb(arr, ARRAY_SIZE, SELECT_NUM);
 
 return 0;
}

阅读(641) | 评论(0) | 转发(0) |
0

上一篇:linux Pipe

下一篇:全排列 ——STL

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