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; }