https://acm.nyist.net/JudgeOnline/problem.php?pid=32
输出结果中 不能重复使用(若有543 则不能有345,435等)
/***************************
# 2013-8-22 15:46:46
# Time: 8MS Memory: 232KB
# Author: zyh
# Status: Accepted
***************************/
#include<stdio.h>
#include<string.h>
int r,n;
bool vis[12];
int s[12];
void permutation(int t)
{
int i;
if(t>r){
for(i=1;i<=r;i++) printf("%d",s[i]);
puts("");
return;
}
for(i=n;i>0;i--){
if(!vis[i] && i<s[t-1] ){ //按题意 加上 i<s[t-1] 限制
s[t] = i;
vis[i] = 1;
permutation(t+1);
vis[i] = 0;
}
}
}
int main()
{
while(~scanf("%d%d",&n,&r))
{
memset(vis,0,sizeof(vis));
memset(v,0,sizeof(v));
s[0] = 111;
permutation(1);
}
return 0;
}