擅长排列的小明 南工19

来源:互联网 发布:ubuntu备份文件 编辑:程序博客网 时间:2024/05/18 05:31

题目链接: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;}