任务描述
1.设计算法从前m个大写字母(m≤26)种取出n个字母的所有排列(组合),并编程实现
输入格式
输入M N
1<=M=26, N<=M
输出格式
按字典序输出排列
注意:行末不输出多余空格
Sample Input
4 2
Sample Output
A B
A C
A D
B A
B C
B D
C A
C B
C D
D A
D B
D C
#include<stdio.h>
#include<string.h>
char a[100];
int visited[30];
int p=1,m,n;
void search(int k,int m,int n){
int i;
if(k>n){
for(i=1;i<n;i++){
printf("%c ",a[i]);
}
printf("%c\n",a[n]);
}
else {
for(i=1;i<=m;i++){
if(!visited[i]){
a[p++]=i+'A'-1;
visited[i]=1;
search(k+1,m,n);
p--;
visited[i]=0;
}
}
}
}
int main(){
int m,n,i;
scanf("%d %d",&m,&n);
for(i=1;i<=m;i++){
visited[i]=0;
}
int p=1;
search(1,m,n);
}