HDU 1176 排列2 全排列
解题报告:给出四个数,然后要你把这四个数组合成的各不相同的四位数按照从小到大的顺序输出来,然后如果最高位是0的话不能输出来,还有最高位是数字如果一样的话,则放在同一行输出。
本来是个比较简单的生成全排列的题,并且个数都固定了,但是这题的特点就是输入的四个数中,并不是各不相同的四个数,所以我们在得到结果之后就必须要判断这个结果在以前是不是已经出现过,然后还有一个就是最高位相同的输出时要放在同一行。然后就是输出每一行之后都要有一个空行,但是最后一组数据后面不能有空行。
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std; int visit[],n,B[],map[][],num; void dfs(int *A,int deep) {
if(deep == ) {
++num;
for(int i = ;i<=;++i)
map[num][i] = A[i];
}
else for(int i = ;i<=;++i)
if(!visit[i]) {
visit[i] = ;
A[deep] = B[i];
dfs(A,deep+);
visit[i] = ;
}
}
int judge(int *A,int n) { //判断是否出现过
if(A[] == )
return ;
for(int i = ;i<n;++i)
if(map[i][]==A[]&&map[i][]==A[]&&map[i][]==A[]&&map[i][]==A[])
return ;
return ;
}
int main() {
int A[];
bool f1 = ;
while(scanf("%d%d%d%d",&B[],&B[],&B[],&B[]),B[]+B[]+B[]+B[]) {
sort(B+,B+);
memset(visit,,sizeof(visit));
memset(map,,sizeof(map));
num = ;
dfs(A,); //先将所有的24种可能存到一个数组里面
int f = ;
if(f1) //保证最后一组数据后面没有空行,前面的数据后有空行
puts("");
for(int i = ;i<=;++i) {
int flag = ;
for(int j = ;j<=;++j) {
if(judge(map[f],f));
else { printf(flag? "%d%d%d%d":" %d%d%d%d",map[f][],map[f][],map[f][],map[f][]); flag = ;}
f++;
}
if(!flag)
puts("");
}
f1 = ;
}
return ;
}
HDU 1176 排列2 全排列的更多相关文章
- 【DP】HDU 1176
HDU 1176 免费馅饼 题意:中文题目不解释. 思路:因为是从中间出发所以思路卡了许久,还在之前做了道HIHO入门的题.能想到的点,从时间思考,然后初始化1s的时候,4,5,6,的数值要特别赋值. ...
- HDU 1176免费馅饼 DP数塔问题转化
L - 免费馅饼 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit Sta ...
- HDU 1176 免费馅饼(记忆化搜索)
免费馅饼 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submi ...
- 怒刷DP之 HDU 1176
免费馅饼 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit Status ...
- HDU 1176 免费馅饼(DP)
职务地址:HDU 1176 以时间为横轴.11个点位纵轴构造一个矩阵.然后利用数字三角形的方法从上往下递推下去. 代码例如以下: #include <iostream> #include ...
- HDU 1176 免费馅饼 (动态规划)
HDU 1176 免费馅饼 (动态规划) Description 都说天上不会掉馅饼,但有一天gameboy正走在回家的小径上,忽然天上掉下大把大把的馅饼.说来gameboy的人品实在是太好了,这馅饼 ...
- hdu - 1716 排列2 (使用set对全排列结果去重)
题意很简单,只是有几个细节要注意,首先就是一次只是输入四个数字.输出结果要从小到大(进行全排列之前要进行排序).题目要求千位数相同的在一行,中间使用空格隔开(第二次在输出的时候判断上一次记录的千位数是 ...
- HDU 5727 Necklace(全排列+二分图匹配)
http://acm.split.hdu.edu.cn/showproblem.php?pid=5727 题意:现在有n个阳珠子和n个阴珠子,现在要把它们串成项链,要求是阴阳珠子间隔串,但是有些阴阳珠 ...
- hdu 1176 免费馅饼(数塔类型)
http://acm.hdu.edu.cn/showproblem.php?pid=1176 免费馅饼 Time Limit: 2000/1000 MS (Java/Others) Memory ...
随机推荐
- Delphi中比较两个对象是否一致及地址是否相同[转]
在delphi中,C#也是如此,对象的地址与对象变量(引用)的地址不是同一个概念.要加以区别. procedure TForm1.btn1Click(Sender: TObject); var ...
- Delphi判断字符串中是否包含汉字,并返回汉字位置
//1,函数代码{判断字符串是否包含汉字// judgeStr:要判断的字符串//posInt:第一个汉字位置}function TForm2.IsHaveChinese(judgeStr: stri ...
- [知乎]老狼:UFS VS NVMe
https://zhuanlan.zhihu.com/p/26652622 最近某手机厂商的闪存门在知乎上被人踢爆,在所谓“爵士水军”和“友商水军”的口水大战中,至少eMMC, UFS等火星名词被广泛 ...
- Vue 爬坑之路(一)—— 使用 vue-cli 搭建项目 (增补)
cd 指定好安装目录 vue init webpack 项目名称 执行 vue vue list 查看可应用模板 vue init webpack +名字 项目已启动
- 将javaweb项目部署到阿里云服务器
主要步骤:1. 购买阿里云服务器2. 远程连接3. 在云服务器上配javaweb环境:jdk,tomcat,MySQL4. 将项目的war文件放到Tomcat下关于云服务器ECS:如果还想在买服务器之 ...
- (转载)MySQL数据库的几种常见高可用方案
转自: https://yq.aliyun.com/articles/74454 随着人们对数据一致性的要求不断的提高,越来越多的方法被尝试用来解决分布式数据一致性的问题,如MySQL自身的优化. ...
- 014 Java的反射机制
作者:nnngu GitHub:https://github.com/nnngu 博客园:http://www.cnblogs.com/nnngu 简书:https://www.jianshu.com ...
- 使用refind引导多系统
使用refind引导多系统 官网下载 rEFInd : http://www.rodsbooks.com/refind/getting.html 安装 rEFInd 教程: http://www.ro ...
- 【LOJ6089】小Y的背包计数问题(动态规划)
[LOJ6089]小Y的背包计数问题(动态规划) 题面 LOJ 题解 神仙题啊. 我们分开考虑不同的物品,按照编号与\(\sqrt n\)的关系分类. 第一类:\(i\le \sqrt n\) 即需要 ...
- 【BZOJ2118】墨墨的等式(最短路)
[BZOJ2118]墨墨的等式(最短路) 题面 BZOJ 洛谷 题解 和跳楼机那题是一样的. 只不过走的方式从\(3\)种变成了\(n\)种而已,其他的根本没有区别了. #include<ios ...