爱嘉牛LA

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
View Code
#include<iostream>
using namespace std;
#define MAXN 100
int num;
void print(int *a,int n){
    int i;
    cout<<num++<<": ";
    for(int i=0;i<n-1;i++)
        cout<<a[i]<<' ';
    cout<<a[n-1]<<endl;
}
void P(int *a,int n,int m,int lev,int *temp,int *tag){
    int i;
    if(lev==m) print(temp,m);
    else
       for(i=0;i<n;i++)
         if(!tag[i]){
             temp[lev]=a[i];
             tag[i]=1;
             P(a,n,m,lev+1,temp,tag);
             tag[i]=0;    
          }
}
void gen(int n,int m){
    int a[MAXN],temp[MAXN],tag[MAXN]={0},i;
    for(i=0;i<n;i++) a[i]=i+1;
    P(a,n,m,0,temp,tag); 
} 
int main(){
    int n,m,cnt=0;
    while(cin>>n>>m){
        num=1;
        gen(n,m);
    }
    return 0;
}

 

posted on 2012-10-13 14:27  爱嘉牛LA  阅读(180)  评论(0编辑  收藏  举报