NYOJ 366 STL 全排列

D的小L

时间限制:4000 ms  |  内存限制:65535 KB

难度:2

描述
      一天TC的匡匡找ACM的小L玩三国杀,但是这会小L忙着哩,不想和匡匡玩但又怕匡匡生气,这时小L给匡匡出了个题目想难倒匡匡(小L很D吧),有一个数n(0<n<10),写出1到n的全排列,这时匡匡有点囧了,,,聪明的你能帮匡匡解围吗?

输入
第一行输入一个数N(0<N<10),表示有N组测试数据。后面的N行输入多组输入数据,每组输入数据都是一个整数x(0<x<10)
输出
按特定顺序输出所有组合。

特定顺序:每一个组合中的值从小到大排列,组合之间按字典序排列。

样例输入
2
2
3
样例输出
12
21
123
132
213
231
312
321
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int main()
{
int t,n;
int a[100];
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
a[i]=i;
sort(a+1,a+1+n);
do
{
for(int i=1;i<=n;i++)
printf("%d",a[i]);
printf("\n");
}while(next_permutation(a+1,a+1+n));
}
return 0;
}

时间: 2024-10-23 10:36:21

NYOJ 366 STL 全排列的相关文章

C++ 全排列函数 nyoj 366

C++ STL中提供了std::next_permutation与std::prev_permutation可以获取数字或者是字符的全排列,其中std::next_permutation提供升序.std::prev_permutation提供降序. 1.std::next_permutation函数原型 template <class BidirectionalIterator> bool next_permutation (BidirectionalIterator first, Bidir

hdu 1027 Ignatius and the Princess II (STL 全排列)

题目链接今天学了 全排列函数 之后,再回过头来看这一题,发现这时对于这样的题 就是一个字 秒 .主要函数有两个 next_permutation 和 prev_permutation这两个一个是向后找 一个是向前找,next的是往后,prev的是向前找.有的人可能不太明白我这里只的向前和向后的意思. 向前 就是 往 字典序小 的 方向 找 ,反之 就是向前. 举个例子把 :假设数组a[n],i<=m,next_permutation(a+i,a+m)就表示对a[i]到a[m]进行操作,每操作一次

STL全排列算法next_permutation和prev_permutation

全排列的问题取决于如何找到"下一个",然后就用同样的方法找到全部的排列 全排列这个问题其实和我们数数:11,12,13,14,15,16,17,18,19,20,21,一样的规律,只不过他的变化只要那固定的几个数自每次都出现,这就导致我们传统的连续整数会在那里丢失一部分:你如何对剩下的这些全排列中的数字看成是"连续的"一列数字,对于"第一个""最小的数字"找到它的"下一个",然后用同样的方法找到再"

NYoj 366 D的小L 【DFS】

D的小L 时间限制:4000 ms  |  内存限制:65535 KB 难度:2 描述       一天TC的匡匡找ACM的小L玩三国杀,但是这会小L忙着哩,不想和匡匡玩但又怕匡匡生气,这时小L给匡匡出了个题目想难倒匡匡(小L很D吧),有一个数n(0<n<10),写出1到n的全排列,这时匡匡有点囧了,,,聪明的你能帮匡匡解围吗? 输入 第一行输入一个数N(0<N<10),表示有N组测试数据.后面的N行输入多组输入数据,每组输入数据都是一个整数x(0<x<10) 输出 按

C++ STL 全排列函数详解

一.概念 从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来,叫做从n个不同元素中取出m个元素的一个排列.当m=n时所有的排列情况叫全排列.如果这组数有n个,那么全排列数为n!个. 比如a,b,c的全排列一共有3!= 6 种 分别是{a, b, c}.{a, c, b}.{b, a, c}.{b, c, a}.{c, a, b}.{c, b, a}. 二.常用操作 1.头文件 #include <algorithm> 2.使用方法 这里先说两个概念:"下一个排列组合&qu

c++STL全排列

包含在c++<algorithm>库中的next_permutation(arr,arr+n)函数可以实现arr中元素的全排列 但是要求arr中元素事先已经按字典序排列好 具体使用方法如下: #include <iostream> #include <algorithm> using namespace std; int arr[5]={1,3,2,3,4}; int main() { sort(arr,arr+5); while(next_permutation(ar

ACM题目————STL + 全排列

今天碰到一个函数,感觉挺好用的,全排列函数 next_permutation! 他可以遍历全排列哦! 话不多说,直接上题. 描述 小明十分聪明,而且十分擅长排列计算.比如给小明一个数字5,他能立刻给出1-5按字典序的全排列,如果你想为难他,在这5个数字中选出几个数字让他继续全排列,那么你就错了,他同样的很擅长.现在需要你写一个程序来验证擅长排列的小明到底对不对. 输入 第一行输入整数N(1<N<10)表示多少组测试数据, 每组测试数据第一行两个整数 n m (1<n<9,0<

STL 全排列

The Little Girl who Picks Mushrooms Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 1805    Accepted Submission(s): 579 Problem Description It's yet another festival season in Gensokyo. Little

(六)全排列permutation

参考: C++ STL 全排列函数详解 算法思路: (1)n个元素的全排列=(n-1个元素的全排列)+(另一个元素作为前缀): (2)出口:如果只有一个元素的全排列,则说明已经排完,则输出数组: (3)不断将每个元素放作第一个元素,然后将这个元素作为前缀,并将其余元素继续全排列,等到出口,出口出去后还需要还原数组: 使用STL的std::next_permutation函数 void PermutationTest() { string s = "abc"; cout <<