【HDOJ】1716 排列2

STL。

 1 /* 1716 */
 2 #include <iostream>
 3 #include <algorithm>
 4 #include <cstdio>
 5 #include <cstring>
 6 using namespace std;
 7
 8 #define MAXN 30
 9 int b[MAXN];
10
11 int main() {
12     int a[4];
13     int t = 0, n;
14     int i, j, k;
15
16     #ifndef ONLINE_JUDGE
17         freopen("data.in", "r", stdin);
18         freopen("data.out", "w", stdout);
19     #endif
20
21     while (1) {
22         j = 0;
23         for (i=0; i<4; ++i) {
24             scanf("%d", &a[i]);
25             j += a[i];
26         }
27         if (j == 0)
28             break;
29         if (t++)
30             printf("\n");
31         sort(a, a+4);
32         n = 0;
33         do {
34             if (a[0]) {
35                 b[n++] = 1000*a[0]+100*a[1]+10*a[2]+a[3];
36             }
37         } while (next_permutation(a, a+4));
38         b[n] = 0;
39         for (i=0; i<n; ++i) {
40             j = b[i]/1000;
41             k = b[i+1]/1000;
42             if (j == k)
43                 printf("%d ", b[i]);
44             else
45                 printf("%d\n", b[i]);
46         }
47     }
48
49     return 0;
50 }
时间: 2024-10-06 21:42:23

【HDOJ】1716 排列2的相关文章

hdu 1716 排列2(stl next_permutation)

http://acm.hdu.edu.cn/showproblem.php?pid=1716 考到题目直接套 next_permutation 没有注意到0不能为首位 结果wa了一整天 输出结构也略有些小坑 #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #include<cmath> using namespace std; int num[10

HDU 1716 排列2 (格式问题+排列)

题意:. 析:我们完全可以STL里面的函数next_permutation(),然后方便,又简单,这个题坑就是在格式上. 行末不能有空格,结尾不能有空行,不大好控制,必须控制好第一次数. 这个题本应该用DFS的,去枚举,也挺简单的,在这就不说了. 代码如下: #include <iostream> #include <cstdio> #include <algorithm> #include <queue> #include <vector> #

hdu 1716(dfs)

题目链接 : http://acm.hdu.edu.cn/showproblem.php?pid=1716 排列2 Problem Description Ray又对数字的列产生了兴趣:现有四张卡片,用这四张卡片能排列出很多不同的4位数,要求按从小到大的顺序输出这些4位数. Input 每组数据占一行,代表四张卡片上的数字(0<=数字<=9),如果四张卡片都是0,则输入结束. Output 对每组卡片按从小到大的顺序输出所有能由这四张卡片组成的4位数,千位数字相同的在同一行,同一行中每个四位数

10道ACM例题让你三天学会STL

清明节给大一的孩子们讲了点STL的应用,下了些功夫,搬到这里来供大家学习交流. 1.泛型程序设计简介与迭代器的介绍 2.常见的STL容器及其例题应用(UVA10474,UVA101,UVA10815,UVA156,UVA540,UVA136 HDU1027,CF501B,HDU1716,HDU4277) 3.相关练习和思路 1.泛型程序设计简介与迭代器的介绍 1.1 泛型程序设计简介 泛型程序设计,简单地说就是使用模板的程序设计法.将一些常用的数据结构(比如链表,数组,二叉树)和算法(比如排序,

hdoj 2049 不容易系列之(4)——考新郎 【全错位排列】【组合数】

方法如题. 全错位排列 不容易系列之(4)--考新郎 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 21347    Accepted Submission(s): 7857 Problem Description 国庆期间,省城HZ刚刚举行了一场盛大的集体婚礼,为了使婚礼进行的丰富一些,司仪临时想出了有一个有意思的节目,叫做"考新郎

HDOJ题目2554 N对数的排列问题(数学)

N对数的排列问题 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 1269    Accepted Submission(s): 942 Problem Description 有N对双胞胎,他们的年龄分别是1,2,3,--,N岁,他们手拉手排成一队到野外去玩,要经过一根独木桥,为了安全起见,要求年龄大的和年龄小的排在一起,好让年龄大的

【HDOJ 5379】 Mahjong tree

[HDOJ 5379] Mahjong tree 往一颗树上标号 要求同一父亲节点的节点们标号连续 同一子树的节点们标号连续 问一共有几种标法 画了一画 发现标号有二叉树的感觉 初始标号1~n 根结点1可以标1或n 否则其他情况无法让下面的子树满足各自连续并且该根的儿子节点都要连续 根结点下的节点平分其他标号 画一画可以发现 每个根下最多有两颗子树 否则无法满足条件 并且两颗子树占据剩余标号的左右两边 中间夹的必须是叶子 这样才能满足该根下的儿子节点标号连续 若根下只有一颗子树 同样可以选择占剩

【HDOJ】【3037】Saving Beans

排列组合 啊……这题是要求c(n-1,0)+c(n,1)+c(n+1,2)+......+c(n+m-1,m) 这个玩意……其实就等于c(n+m,m) 好吧然后就是模P……Lucas大法好= = 我SB地去预处理<P的所有fac和inv了……果断TLE 事实上Lucas时对于<P的部分直接暴力算就好了 1 //HDOJ 3037 2 #include<cstdio> 3 #include<cstdlib> 4 #include<cstring> 5 #inc

HDOJ多校联合第五场

1001 题意:求逆序对,然后交换k次相邻的两个数,使得剩下的逆序对最少. 分析:题目用到的结论是:数组中存在一对逆序对,那么可以通过交换相邻两个数使得逆序对减少1,交换k次,可以最多减少k个. 嘉定ai>aj,i < j,如果ai,aj相邻的,那么显然可以通过交换减少1:不相邻的情况, 考虑ak,k = j-1; #11:ak > aj,那么ak,aj构成逆序对,交换后逆序对减少1: #12:ak<=aj,那么ai,ak构成逆序对,问题转化为更小规模,可以通过同样的方法进一步分析