題目鏈接:http://acm.nyist.edu.cn/JudgeOnline/problem.php?pid=32
AC代碼:
#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
int ans[13],visited[13],n,m;
void dfs(int pos)
{
if(pos==m)
{
for(int i=0;i<m;i++)
{
printf("%d",ans[i]);
}
printf("\n");
}
else
{
for(int i=n;i>=1;i--)
{
if(visited[i]==0)
{
if(pos!=0)
{
if(i<ans[pos-1])
{
visited[i]=1;
ans[pos]=i;
dfs(pos+1);
ans[pos]=0;
visited[i]=0;
}
}
else
{
visited[i]=1;
ans[pos]=i;
dfs(pos+1);
ans[pos]=0;
visited[i]=0;
}
}
}
}
}
int main()
{
while(~scanf("%d%d",&n,&m))
{
memset(ans,0,sizeof(ans));
for(int i=0;i<m;i++)
memset(visited,0,sizeof(visited));
dfs(0);
}
return 0;
}