HDU4272LianLianKan(dfs)
Now we have a number stack, and we should link and pop the same element pairs from top to bottom. Each time, you can just link the top element with one same-value element. After pop them from stack, all left elements will fall down. Although the game seems to be interesting, it's really naive indeed.

To prove I am a wisdom among my friend, I add an additional rule to the game: for each top element, it can just link with the same-value element whose distance is less than 6 with it.
Before the game, I want to check whether I have a solution to pop all elements in the stack.
The first line is an integer N indicating the number of elements in the stack initially. (1 <= N <= 1000)
The next line contains N integer ai indicating the elements from bottom to top. (0 <= ai <= 2,000,000,000)
注意给的顺序是从底部到顶部。
开始想直接模拟,不可行,因为在下面5个里可能有一个或多个相同的元素,每个选择都可能对后面造成影响,因此要dfs。
其中还巧妙的用了map,当然改用set来存然后看里面到底有没有奇数个的元素也是可以的,这点的优化很重要。
#include<stdio.h>
#include<iostream>
#include<string>
#include<cstring>
#include<algorithm>
#include<queue>
#include<set>
#include<map> using namespace std; int vis[],a[]; int dfs(int n)
{
int i=,j=n-;
while(n>=&&vis[n]) --n;
if(n==-) return ;
if(n==&&!vis[]) return ;
while(i<=)
{
if(j<) return ;
if(vis[j]) --j;
if(a[n]==a[j])
{
vis[j]=;
if(dfs(n-)) return ;
vis[j]=;
}
++i;
--j;
}
return ;
} int main()
{
int k,m,q,t,p,n;
int T;
map<int,int> mp;
map<int,int>::iterator it; while(cin>>n)
{
t=;
for(int i=;i<n;++i)
{
scanf("%d",&a[i]);
vis[i]=;
mp[a[i]]++;
} for(it=mp.begin();it!=mp.end();++it)
{
if((*it).second%)
{
t=;
break;
}
} if(t)
{
cout<<<<endl;
}else
{
cout<<dfs(n-)<<endl;
} }
return ;
}
HDU4272LianLianKan(dfs)的更多相关文章
- LeetCode Subsets II (DFS)
		题意: 给一个集合,有n个可能相同的元素,求出所有的子集(包括空集,但是不能重复). 思路: 看这个就差不多了.LEETCODE SUBSETS (DFS) class Solution { publ ... 
- LeetCode  Subsets (DFS)
		题意: 给一个集合,有n个互不相同的元素,求出所有的子集(包括空集,但是不能重复). 思路: DFS方法:由于集合中的元素是不可能出现相同的,所以不用解决相同的元素而导致重复统计. class Sol ... 
- HDU 2553 N皇后问题(dfs)
		N皇后问题 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Description 在 ... 
- 深搜(DFS)广搜(BFS)详解
		图的深搜与广搜 一.介绍: p { margin-bottom: 0.25cm; direction: ltr; line-height: 120%; text-align: justify; orp ... 
- 【算法导论】图的深度优先搜索遍历(DFS)
		关于图的存储在上一篇文章中已经讲述,在这里不在赘述.下面我们介绍图的深度优先搜索遍历(DFS). 深度优先搜索遍历实在访问了顶点vi后,访问vi的一个邻接点vj:访问vj之后,又访问vj的一个邻接点, ... 
- 深度优先搜索(DFS)与广度优先搜索(BFS)的Java实现
		1.基础部分 在图中实现最基本的操作之一就是搜索从一个指定顶点可以到达哪些顶点,比如从武汉出发的高铁可以到达哪些城市,一些城市可以直达,一些城市不能直达.现在有一份全国高铁模拟图,要从某个城市(顶点) ... 
- 深度优先搜索(DFS)和广度优先搜索(BFS)
		深度优先搜索(DFS) 广度优先搜索(BFS) 1.介绍 广度优先搜索(BFS)是图的另一种遍历方式,与DFS相对,是以广度优先进行搜索.简言之就是先访问图的顶点,然后广度优先访问其邻接点,然后再依次 ... 
- 图的 储存 深度优先(DFS)广度优先(BFS)遍历
		图遍历的概念: 从图中某顶点出发访遍图中每个顶点,且每个顶点仅访问一次,此过程称为图的遍历(Traversing Graph).图的遍历算法是求解图的连通性问题.拓扑排序和求关键路径等算法的基础.图的 ... 
- 搜索——深度优先搜索(DFS)
		设想我们现在身处一个巨大的迷宫中,我们只能自己想办法走出去,下面是一种看上去很盲目但实际上会很有效的方法. 以当前所在位置为起点,沿着一条路向前走,当碰到岔道口时,选择其中一个岔路前进.如果选择的这个 ... 
随机推荐
- 测试HAPROXY的文件分流办法
			测试HAPROXY的文件分流办法 http://blog.chinaunix.net/uid-20553497-id-3054980.html http://blog.sina.com.cn/s/bl ... 
- 用python写makefile
			温馨提示:阅读本文的同学最好能了解makefile和python的编写规则. 不懂的同学能够先保存在收藏夹.以便日后查看. 事实上之前我一直非常懒,我不想了解makefile规则.由于在linux下开 ... 
- Android如何完全调试framework层代码
			1 之前写过一篇文章:<Android实现开机调试system_process> 2 google的eclipse插件ADT的已经能够很方便的调试Android的apk了,但是调试的时候应 ... 
- 【JavsScript】webapp的优化整理
			单页or多页 webapp 现状 优劣之分 网络传输优化 综述 fake页-首屏加速 降低请求数 降低请求量 缓存Ajax/localstorage DOM操作优化 综述 关于页面渲染 减少使用定位属 ... 
- 浏览器禁用Cookie,基于Cookie的会话跟踪机制失效的解决的方法
			当浏览器禁用Cookies时.基于Cookie的会话跟踪机制就会失效.解决的方法是利用URL重写机制跟踪用户会话. 在使用URL重写机制的时候须要注意.为了保证会话跟踪的正确性,全部的链接和重定向语句 ... 
- boost.asio源码剖析(五) ---- 泛型与面向对象的完美结合
			有人说C++是带类的C:有人说C++是面向对象编程语言:有人说C++是面向过程与面向对象结合的语言.类似的评论网上有很多,虽然正确,却片面,是断章取义之言. C++是实践的产物,C++并没有为了成为某 ... 
- Android短信监听软件
			本案例是在android手机中运行,是一个没有界面的短信监听软件.主要是用BroadcastReceiver来接受短信广播,当接收到短信后就跳转到service中来转发短信.哈哈,不是用来干坏事的.这 ... 
- xy
			用C#實現Blob數據類型 PowerBuilder提供了Blob數據類型, 用來處理二進制數據(如:圖像,文件,二進制流,文本等等). 本質上, Blob是可變長的字節數組, 它提供了一系列全局函數 ... 
- mysql分表研究
			分表是分散数据库压力的好方法. 分表,最直白的意思,就是将一个表结构分为多个表,然后,可以再同一个库里,也可以放到不同的库. 当然,首先要知道什么情况下,才需要分表.个人觉得单表记录条数达到百万到千万 ... 
- Java对象初始化顺序
			最近我发现了一个有趣的问题,这个问题的答案乍一看下骗过了我的眼睛.看一下这三个类: package com.ds.test; public class Upper { String upperSt ... 
