您的位置:首页 > 其它

擅长排列的小明 南工19

2013-04-17 11:32 232 查看
题目链接:here~~

#include <iostream>
using namespace std;
int n,m, a[10];
bool bz[10];//标记数字是否已经被用过
void DFS(int k)
{
if (k==n)//搜出来的长度等于要求的长度,输出该序列,由于是从小到大搜索的所以输出的时候也是从小到大的
{
for (int i=0; i<n; i++)
cout<<a[i];
cout<<endl;
}
else//不等于要求的长度,继续添加数
for (int i=1; i<=m; i++)
if ( !bz[i] )
{
a[k]=i;//将搜索到的数存起来
bz[i]=true;//标记为已访问
DFS(k+1);//搜索下一个数
bz[i]=false;//上一个序列搜索完之后,重新标记为未访问
}
}
int main()
{
int N;
cin>>N;
while(N--)
{
cin>>m>>n;
DFS(0);//从第一位开始搜索
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: