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在没有隔板情况下不能对视(横行和数列),问最多可以放多少个 ...
随机推荐
- org.apache.catalina.mbeans.ServerLifecycleListener
Tomcat 启动报错: java.lang.ClassNotFoundException: org.apache.catalina.mbeans.ServerLifecycleListener at ...
- Android 实现自动接听和挂断电话功能
添加权限 <uses-permission android:name="android.permission.CALL_PHONE"/> <uses-permis ...
- JavaWeb学习总结
http://www.cnblogs.com/xdp-gacl/tag/JavaWeb%E5%AD%A6%E4%B9%A0%E6%80%BB%E7%BB%93/ http://www.cnblogs. ...
- php内核探索
http://www.nowamagic.net/librarys/veda/special/PHP%E5%86%85%E6%A0%B8%E6%8E%A2%E7%B4%A2 关注PHP 源代码 Zen ...
- Linq lamda表达式Single和First方法
让我们来看看如何对一个整数数组使用 Single 操作符.这个整数数组的每个元素代表 2 的 1 到 10 次方.先创建此数组,然后使用 Single 操作符来检索满足 Linq Lambda表达 ...
- ALM/QC OTA Field in Database(查询ALM数据库的字段)
在使用ALM的OTA接口编写脚本的时候,通常会需要知道各个选项在数据库中对应的字段,才能通过脚本读取或写入数据.比如要获取test case的step内容,要在测试结束时将测试实际结果写回test s ...
- 1.4.2 solr字段类型--(1.4.2.6)使用外部文件和程序
1.4.2 solr字段类型 (1.4.2.1) 字段类型定义和字段类型属性. (1.4.2.2) solr附带的字段类型 (1.4.2.3) 使用货币和汇率 (1.4.2.4) 使用Dates(日期 ...
- 沈逸老师PHP魔鬼特训笔记(1)
此课程个人开发环境可以考虑使用Ubuntu ,推荐sublime和PhpStorm作为开发环境.一.PHP的一大特性是:脚本语言.不要编译,写完就可以运行? 然而并不是....... PHP代码要想运 ...
- Android小项目之十二 设置中心的界面
------- 源自梦想.永远是你IT事业的好友.只是勇敢地说出我学到! ---------- 按惯例,写在前面的:可能在学习Android的过程中,大家会和我一样,学习过大量的基础知识,很多的知识点 ...
- Android Activity的启动过程
文章编辑的太长了,请移步我的csdn博客:http://blog.csdn.net/xyh269 Android Activity的启动过程原文链接:http://blog.csdn.net/xyh2 ...