DFS初练

   日期:2020-07-10     浏览:97    评论:0    
核心提示:Description作为DFS的基础题,我们要求对于1~N按字典序输出所有的排列情况。InputN(1 <= N <= 9)注:测试数据包含多组Output输出对应的字典序全排列,数之间以空格隔开,每个排列最后一个数后换行。每个数据处理完后空一行Sample Input Copy23Sample Output Copy1 22 11 2 31 3 22 1 32 3 13 1 23 2 1AC代码#include

Description

作为DFS的基础题,我们要求对于1~N按字典序输出所有的排列情况。

Input

N(1 <= N <= 9)
注:测试数据包含多组

Output

输出对应的字典序全排列,数之间以空格隔开,每个排列最后一个数后换行。
每个数据处理完后空一行

Sample Input Copy

2
3

Sample Output Copy

1 2
2 1

1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1

AC代码

#include<bits/stdc++.h>
using namespace std;
#define ios ios::sync_with_stdio(false); cin.tie(NULL);
const int N = 10;
int cnt[N];//存储准备输出的数
bool vis[N];//标记是否使用过该数
int t;//判断存储了几个数
void dfs(int n)
{
    if(t==n)
    {
        for(int i=0; i<t; i++)
        {
            cout<<cnt[i];
            if(i!=t)
                cout<<' ';
        }
        cout<<'\n';
        return ;
    }
    for(int i=1; i<=n; i++)
    {
        if(!vis[i])
        {
            vis[i] = true;
            cnt[t] = i;
            t++;
            dfs(n);
            vis[i] = false;
            t--;
        }
    }

}

int main()
{
    int n;
    while(cin>>n)
    {
        dfs(n);
        cout<<'\n';
    }
    return 0;
}
 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服