akoj-1048-求某一整数序列的全排列问题

求某一整数序列的全排列问题

Time Limit:1000MS  Memory Limit:65536K
Total Submit:35 Accepted:16

Description

现有一整数序列如:123,请计算出它的全排列。

Input

输入数据有两行组成,第一行为整数序列的长度,第二行为整数序列,序列元素之间以Tab符相隔。

Output

输出数据为整数序列的全排列,每一个排列单独占一行。

Sample Input

3
1 2 3

Sample Output

123
132
213
231
312
321

Source

[Submit]   [Go Back]   [Status]   [Discuss]

 1 /*
 2  * http://183.167.205.82:8081/JudgeOnline/showproblem?problem_id=1048
 3  * by jtahstu on 2015/2/7 7:00
 4  * 知识点: 排列生成器     按字典序的下一个排列     next_permutation()
 5  *                       按字典序的前一个排列     prev_permutation()
 6  */
 7
 8 #include <iostream>
 9 #include <algorithm>
10 #include <string>
11 using namespace std;
12
13 int main() {
14         int m;
15         string s,a;
16         cin>>m;
17         for(int i=0;i<m;i++)
18         {
19             cin>>a;
20             s+=a;
21         }
22         cout<<s<<endl;
23         while(next_permutation(s.begin(),s.end()))
24             cout<<s<<endl;
25
26     return 0;
27  }
时间: 2024-10-08 20:04:23

akoj-1048-求某一整数序列的全排列问题的相关文章

数组-10. 求整数序列中出现次数最多的数

数组-10. 求整数序列中出现次数最多的数(15) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 张彤彧(浙江大学) 本题要求统计一个整型序列中出现次数最多的整数及其出现次数. 输入格式: 输入在一行中给出序列中整数个数N(0<N<=1000),以及N个整数.数字间以空格分隔. 输出格式: 在一行中输出出现次数最多的整数及其出现次数,数字间以空格分隔.题目保证这样的数字是唯一的. 输入样例: 10 3 2 -1 5 3 4 3

7-6 求整数序列中出现次数最多的数 (15 分)

7-6 求整数序列中出现次数最多的数 (15 分) 本题要求统计一个整型序列中出现次数最多的整数及其出现次数. 输入格式: 输入在一行中给出序列中整数个数N(0<N≤1000),以及N个整数.数字间以空格分隔. 输出格式: 在一行中输出出现次数最多的整数及其出现次数,数字间以空格分隔.题目保证这样的数字是唯一的. 输入样例: 10 3 2 -1 5 3 4 3 0 3 2 输出样例: 3 4 s = input().split()[1:] count_max = 0 for i in set(s

pta 数据结构 习题2.4 递增的整数序列链表的插入(15 分)

习题2.4 递增的整数序列链表的插入(15 分) 本题要求实现一个函数,在递增的整数序列链表(带头结点)中插入一个新整数,并保持该序列的有序性. 函数接口定义: List Insert( List L, ElementType X ); 其中List结构定义如下: typedef struct Node *PtrToNode; struct Node { ElementType Data; /* 存储结点数据 */ PtrToNode Next; /* 指向下一个结点的指针 */ }; type

【编程题目】判断整数序列是不是二元查找树的后序遍历结果,如果是,构建该二元查找树

判断整数序列是不是二元查找树的后序遍历结果题目:输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果.如果是返回 true,否则返回 false.例如输入 5.7.6.9.11.10.8,由于这一整数序列是如下树的后序遍历结果:8/ \6 10/ \ / \5 7 9 11因此返回 true.如果输入 7.4.6.5,没有哪棵树的后序遍历的结果是这个序列,因此返回 false. 做这个题目的时候最开始傻了,想着从前到后根据数字的大小关系判断.后来幡然醒悟,根据后序遍历的特点.序列最后一

求两个整数的最大公约数

<C和指针>第7章第2道编程题: 两个整型值M和N(M.N均大于0)的最大公约数可以按照下面的方法计算: 请编写一个名叫gcd的函数,它接受两个整型参数,并返回这两个数的最大公约数.如果这两个参数中的任何一个不大于零,函数返回零. 1 /* 2 ** 求两个整数的最大公约数 3 */ 4 5 #include <stdio.h> 6 7 int gcd( int M, int N ); 8 9 int 10 main() 11 { 12 int m, n; 13 scanf( &q

erlang 小程序:整数序列,搜索和为正的最长子序列

最近学习了一下erlang, 编了个小程序 算法如下: 把参数分为三个 当前位置的前子序列(Save)(比如 -5, 1,2,-1, _, ... ) 前位置为_时, 前子序列就是 1,2,-1 以及此子序列的和(CurSum) ( 1,2,-1的 CurSum 是 2) 剩余的数 Rest:  剩余的数也可以表示为 [H|T] ,H是第一元素,T为剩余的元素是列表 处理过程如下: 如果 Rest 为空,说明处理完毕,打印 CurSum和Save 如果,还剩一个元素(Rest只有一个元素) 如果

欧几里得算法求两个整数的最大公因数

unsigned int Gcd (unsigned int m,unsigned int n){ unsigned int rem; while(n>0){ rem = m % n; m = n; n = rem; } return m; } 对于m<n的情况,第一次循环m,n会交换 算法的时间复杂度计算 时间复杂度 logn 若M > N,则第一次循环交换M和N. 若想分析其时间复杂度,则要求循环次数,即生成余数的次数. 可以证明: 当M > N, 则M % N < M

C语言求10个整数中的最大值

我们知道求三个整数的最大值可以先定义三个变量来存放这三个数值,但是如果有十个,一百个,一千个,我们不可能定义那么多变量出来,没有什么意义.怎么解决呢?这个时候我们可以用一个数组来存放我们需要比较的数值,比如十个值,我们就用a[10].美观简洁高效!数据的存放解决了,下来就是比较,先定义一个变量比如:MAX来存放这十个数其中的一个值再一一进行比较就可以了,但为了方便起见,我们通常选择数组的第一个值即a[0]赋值给变量,然后依次和a[1].a[2]....顺序比较.如果MAX小于a[1]则把a[1]

12_1求两个整数中的较小值,要求不能使用比较运算符, if-else, a&gt;b?a:b, while for

转载请注明出处:http://www.cnblogs.com/wuzetiandaren/p/4253932.html  声明:现大部分文章为寻找问题时在网上相互转载,此博是为自己做个记录记录,方便自己也方便有类似问题的朋友,本文的思想也许有所借鉴,但源码均为本人实现,如有侵权,请发邮件表明文章和原出处地址,我一定在文章中注明.谢谢. 题目:求两个整数中的较小值,要求不能使用比较运算符, if-else, a>b?a:b, while for, 内嵌汇编递归第三方函数. 在网上看到一些网友给出了