codevs——1294 全排列

1294 全排列

时间限制: 1 s

空间限制: 128000 KB

题目等级 : 黄金 Gold

题解

查看运行结果

题目描述 Description

给出一个n, 请输出n的所有全排列

输入描述 Input Description

读入仅一个整数n   (1<=n<=10)

输出描述 Output Description

一共n!行,每行n个用空格隔开的数,表示n的一个全排列。并且按全排列的字典序输出。

样例输入 Sample Input

3

样例输出 Sample Output

1 2 3

1 3 2

2 1 3

2 3 1

3 1 2

3 2 1

#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<iostream>
#include<algorithm>
using namespace std;
bool vis[100];
int n,a[100];
int read()
{
    int x=0,f=1; char ch=getchar();
    while(ch<‘0‘||ch>‘9‘){if(ch==‘-‘)f=-1; ch=getchar();}
    while(ch>=‘0‘&&ch<=‘9‘){x=x*10+ch-‘0‘; ch=getchar();}
    return x*f;
}
void dfs(int now)
{
    if(now==n+1)
    {
        for(int i=1;i<=n;i++)
         printf("%d ",a[i]);
        printf("\n");
        return ;
    }
    for(int i=1;i<=n;i++)
     if(!vis[i])
     {
         vis[i]=true;
         a[now]=i;
         dfs(now+1);
         vis[i]=false;
     }
    return ;
}
int main()
{
    n=read();
    dfs(1);
    return 0;
}
时间: 2024-10-26 00:20:00

codevs——1294 全排列的相关文章

CodeVS 1294 全排列(dfs)

题目: http://codevs.cn/problem/1294/ 代码(用cout 会超时!!!): #include <iostream> #include<cstdio> using namespace std; int n; bool visited[15] = {false}; int res[15] = {0}; void dfs(int m) { if(m > n) { for(int i = 1; i < n; i++) { printf("

codevs 1294 全排列 next_permuntation

#include<bits/stdc++.h> using namespace std; #define ll long long #define pi (4*atan(1.0)) #define eps 1e-14 const int N=2e5+10,M=4e6+10,inf=1e9+10,mod=1e9+7; const ll INF=1e18+10; int a[N]; int main() { int n; scanf("%d",&n); for(int

CODE[VS] 1294 全排列

1294 全排列 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 查看运行结果 题目描述 Description 给出一个n, 请输出n的所有全排列 输入描述 Input Description 读入仅一个整数n   (1<=n<=10) 输出描述 Output Description 一共n!行,每行n个用空格隔开的数,表示n的一个全排列.并且按全排列的字典序输出. 样例输入 Sample Input 3 样例输出 Sample Output 1 2

[Wikioi 1294]全排列---两种不同的解法(复习)

题目描述 Description 给出一个n, 请输出n的所有全排列 输入描述 Input Description 读入仅一个整数n   (1<=n<=10) 输出描述 Output Description 一共n!行,每行n个用空格隔开的数,表示n的一个全排列.并且按全排列的字典序输出. 样例输入 Sample Input 3 样例输出 Sample Output 1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 数据范围及提示 Data Size & Hint

wikioi 1294 全排列 dfs

1294 全排列 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 给出一个n, 请输出n的所有全排列 输入描述 Input Description 读入仅一个整数n   (1<=n<=10) 输出描述 Output Description 一共n!行,每行n个用空格隔开的数,表示n的一个全排列.并且按全排列的字典序输出. 样例输入 Sample Input 3 样例输出 Sample Output 1 2 3 1 3 2 2

[ CodeVS冲杯之路 ] P1294

不充钱,你怎么AC? 题目:http://codevs.cn/problem/1294/ 随手一打就是这么漂亮的全排列,想当年我初一还是初二的时候,调了1个多小时才写出来(蒟蒻一枚) 直接DFS每次枚举当前数字,记得判断是否重复,取完后打上标记并保存当前位置的数,最后到n+1层时打出来 因为极限数据的方案比较多,所以可以加上输出优化,不过不加也不会TL 上面那个是加了读入优化的,快了将近3倍 1 #include<cstdio> 2 #include<cstdlib> 3 #inc

[CODEVS 1301] 任务分配

描述 有N位工作人员,同时有N项任务, 每人必须承担一项任务,若给出某人不能从事的某些任务, 问要安排好工作,共有多少种方案? http://codevs.cn/problem/1301/ 分析 容斥原理的应用. 先看看样例: 四个人: A, B, C, D A 不能选择: 2 B 不能选择: 2 3 C 不能选择: 3 4 D 不能选择: 4 总数是1~4全排列的个数 => 4! = 24 再考虑不能选的情况 那么 => 采用 总数-非法个数 的方法计算, 而后者需用容斥原理计算. answ

codevs 1229 数字游戏

1229 数字游戏 http://codevs.cn/problem/1229/ 题目描述 Description Lele 最近上课的时候都很无聊,所以他发明了一个数字游戏来打发时间.  这个游戏是这样的,首先,他拿出几张纸片,分别写上0到9之间的任意数字(可重复写某个数字),然后,他叫同学随便写两个数字X和K.Lele要做的事情就是重新拼这些纸牌,组成数字 T ,并且 T + X 是 K 的正整数倍. 有时候,当纸片很多的时候,Lele经常不能在一节课之内拼出来,但是他又想知道答案,所以,他

生成n个元素的全排列 C实现

近期在准备复习算法设计的考试,下边记录一些,看笔记时突然想到的解法. 问题是这种 用递归实现 n 个元素的全排列. 当时老师给出的解答是 假定第i个元素 ri 放在首位,于是 f(r1,r2,-,rn) = f(ri U {r1, r2,-.,rn}) = U (ri & f(r1,r2, -, rn)), 当时应该是听懂了,只是如今看到这个笔记.又醉了. (这货竟然是我上课记的笔记 .... . .. .) 后来自己细致想想,事实上非常简单的 一个问题, 利用回溯法,把问题看成是一个排列树.能