hdu 1716(dfs)
题目链接 : http://acm.hdu.edu.cn/showproblem.php?pid=1716
排列2
现有四张卡片,用这四张卡片能排列出很多不同的4位数,要求按从小到大的顺序输出这些4位数。
每组输出数据间空一行,最后一组数据后面没有空行。
#include <cstdio>
#include <cmath>
#include <cstring>
#include <algorithm>
using namespace std; int a[],vis[],s[];
int t,c; void dfs(int num)
{
if (num == )
{
if (c>=)
s[t++] = c;
return ;
}
for (int i=; i<; i++)
{
if (!vis[i]) //标记访问
{
vis[i] = ;
c = c * + a[i];
dfs(num + );
vis[i] = ;
c = (c - a[i]) / ;
}
}
} int main ()
{
int flag = ;
while (scanf ("%d%d%d%d",&a[],&a[],&a[],&a[]))
{
sort(a, a+);
if (a[] == )
break;
if (flag)
{
printf ("\n");
}
flag = ;
memset(vis, , sizeof(vis));
t = c = ;
dfs();
sort(s, s+t);
int temp;
printf ("%d",s[]);
temp = s[] / ; //记住千位数
for (int i=; i<t; i++)
{
if (s[i] == s[i-]) //因为排序过了,所以相同的四位数都在一起
continue ;
if (s[i] / != temp) //千位数不同,换行
{
printf ("\n%d",s[i]);
temp = s[i] / ; //同时记录新的千位数
}
else
{
printf (" %d",s[i]);
}
}
printf ("\n");
}
return ;
}
今天意外看到一位大神博客,用了一个next_permutation(a.begin(), a.end())函数,轻轻松松实现全排列。
附上大神博客链接和他的代码 : http://www.cnblogs.com/jackge/archive/2013/05/22/3093089.html
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm> using namespace std; int main(){ //freopen("input.txt","r",stdin); int a[],tag=;
while(scanf("%d%d%d%d",&a[],&a[],&a[],&a[])){
if(a[]== && a[]== && a[]== && a[]==)
break;
if(tag)
printf("\n");
tag=;
int flag=,tmp;
do{
if(a[]==)
continue;
if(flag){
printf("%d%d%d%d",a[],a[],a[],a[]);
flag=;
}else if(tmp==a[])
printf(" %d%d%d%d",a[],a[],a[],a[]);
else
printf("\n%d%d%d%d",a[],a[],a[],a[]);
tmp=a[];
}while(next_permutation(a,a+));
printf("\n");
}
return ;
}
hdu 1716(dfs)的更多相关文章
- HDU 5143 DFS
分别给出1,2,3,4 a, b, c,d个 问能否组成数个长度不小于3的等差数列. 首先数量存在大于3的可以直接拿掉,那么可以先判是否都是0或大于3的 然后直接DFS就行了,但是还是要注意先判合 ...
- Snacks HDU 5692 dfs序列+线段树
Snacks HDU 5692 dfs序列+线段树 题意 百度科技园内有n个零食机,零食机之间通过n−1条路相互连通.每个零食机都有一个值v,表示为小度熊提供零食的价值. 由于零食被频繁的消耗和补充, ...
- STL训练 HDU - 1716 Ray又对数字的列产生了兴趣:
HDU - 1716 Ray又对数字的列产生了兴趣: 现有四张卡片,用这四张卡片能排列出很多不同的4位数,要求按从小到大的顺序输出这些4位数. Input 每组数据占一行,代表四张卡片上的数字(0&l ...
- hdu 1716 排列2(DFS搜索)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1716 排列2 Time Limit: 1000/1000 MS (Java/Others) Me ...
- hdu 1716 深搜dfs
#include<stdio.h> #include<stdlib.h> #include<string.h> #define N 5 int f[N]; int ...
- hdu 1716 排序2(dfs)
排列2 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...
- HDU 5877 dfs+ 线段树(或+树状树组)
1.HDU 5877 Weak Pair 2.总结:有多种做法,这里写了dfs+线段树(或+树状树组),还可用主席树或平衡树,但还不会这两个 3.思路:利用dfs遍历子节点,同时对于每个子节点au, ...
- hdu 4751(dfs染色)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4751 思路:构建新图,对于那些两点连双向边的,忽略,然后其余的都连双向边,于是在新图中,连边的点是能不 ...
- HDU 1045 (DFS搜索)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1045 题目大意:在不是X的地方放O,所有O在没有隔板情况下不能对视(横行和数列),问最多可以放多少个 ...
随机推荐
- 深入理解JavaScript 模块模式
http://www.adequatelygood.com/JavaScript-Module-Pattern-In-Depth.html 模块模式是JavaScript一种常用的编码模式.这是一般的 ...
- FreeMarker中文API手冊(完整)
FreeMarker概述 FreeMarker是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯Java编写 FreeMarker被设计用来生成HTML Web页面,特别是基于MVC模式的应用 ...
- MemCache超详细解读 图
http://www.cnblogs.com/xrq730/p/4948707.html MemCache是什么 MemCache是一个自由.源码开放.高性能.分布式的分布式内存对象缓存系统,用于 ...
- Golang学习 - bufio 包
------------------------------------------------------------ // bufio 包实现了带缓存的 I/O 操作 -------------- ...
- 关于修改Android手机的音量
首先,必须要获取系统的声音服务权限 <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS&qu ...
- Cyclic Nacklace
Problem Description CC always becomes very depressed at the end of this month, he has checked his cr ...
- solr默认查询设置
在搜索过程中,如果我们每次请求中都传入很多固定的参数,会很繁琐,这里再solrconfig.xml中初始化定义一些不经常改动的搜索参数: <requestHandler name="/ ...
- 【Linux/Ubuntu学习2】ubuntu-ubuntu10.04使用wine安装SourceInsight
1. 环境:ubuntu10.04 2. 安装 wine 关于 wine ,请参考这里.通过网络安装: $ sudo apt-get install wine 3. 安装 SourceInsight ...
- android -- WatchDog看门狗分析
在由单片机构成的微型计算机系统中,由于单片机的工作常常会受到来自外界电磁场的干扰,造成程序的跑飞,而陷入死循环,程序的正常运行被打断,由单片机控制的系统无法继续工作,会造成整个系统的陷入停滞状态,发生 ...
- 关于URLEncoder的编码和URLDecode解码
在我们开发中,很多时候会遇见各种编码乱码的问题,其实这都是编码不一致的问题,如果你懂得了关于URLEncoder的编码和URLDecode解码,那么问题就会随之消失! 下面我们看看关于编码的代码: [ ...