zoukankan      html  css  js  c++  java
  • 洛谷 P1706 全排列问题

    洛谷 P1706 全排列问题

    题目链接

    <font face="Comic Sans Ms"size=5>https://www.luogu.org/problemnew/show/P1706


    题目描述

    输出自然数1到n所有不重复的排列,即n的全排列,要求所产生的任一数字序列中不允许出现重复的数字。


    输入输出格式

    输入格式:
    n(1≤n≤9)

    输出格式:
    由1~n组成的所有不重复的数字序列,每行一个序列。每个数字保留5个常宽。


    输入输出样例

    输入样例#1:
    3
    输出样例#1:
    1 2 3
    1 3 2
    2 1 3
    2 3 1
    3 1 2
    3 2 1


    思路

    不得不承认,这个厂宽坑过我几次......(还是读题不好好读的事情)
    比较经典的一道排列组合题,就是搜索,到了n就输出,然后回溯再搜索就好啦,没有什么很难的地方


    代码

    #include<bits/stdc++.h>//懒人专用头文件
    using namespace std;
    
    bool b[10086];
    int a[10086];
    int n,m;
    
    void print() {//输出
    	for(int i=1; i<=n; i++) {
    		cout<<setw(5)<<a[i];
    	}
    	cout<<endl;
    }
    
    int search(int t) {//搜索与回溯
    	for(int i=1; i<=n; i++) {
    		if(!b[i]) {
    			a[t]=i;
    			b[i]=1;
    			if(t==n) {
    				print();
    			} else search(t+1);
    			b[i]=0;
    		}
    	}
    }
    
    
    int main() {//输入并从1开始搜
    	scanf("%d",&n);
    	search(1);
    	return 0;
    }
    
  • 相关阅读:
    Virtualbox-CentOS网络配置
    使用phpmyadmin创建数据库
    Vue CLI的使用
    webpack3的使用
    Vue组件化之插槽
    Vue组件化开发
    Vue高级技巧
    Vue基础学习笔记
    Git解决冲突和diff用法
    Git常用命令举例
  • 原文地址:https://www.cnblogs.com/loceaner/p/10712905.html
Copyright © 2011-2022 走看看