AOJ 0033 Ball 深度优先搜索
有一个形似央视大楼(Orz)的筒,从A口可以放球,放进去的球可通过挡板DE使其掉进B裤管或C裤管里,现有带1-10标号的球按给定顺序从A口放入,问是否有一种控制挡板的策略可以使B裤管和C裤管中的球从下往上标号递增。
输入:
第一行输入数据组数N。接下来N行为N组具体数据,每组数据中有10个整数,代表球的放入顺序。
输出:
对于每组数据,若策略存在,输出YES;若不存在,输出NO
Sample Input
2
3 1 4 2 5 6 7 8 9 10
10 9 8 7 6 5 4 3 2 1
Output for the Sample Input
YES
NO
题目大意:
有十个数,判断是否能分成两个递增序列
解题思路:
深度优先搜索
教训:注意输出的内容,是大写!!!
代码:
#include<iostream>
using namespace std;
int flag;
int a[11], b[11], num[11];
void init() {flag = 0;for (int i = 0; i <= 10; i++) {a[i] = 0;b[i] = 0;}
}
void DFS(int x, int i, int j) {if (x == 11) { flag = 1; return;}if (num[x] > a[i]) {a[i + 1] = num[x];DFS(x + 1, i + 1, j);if (flag == 1) { return; }a[i + 1] = 0;//尝试失败后注意清0}if (num[x] > b[j]) {b[j + 1] = num[x];DFS(x + 1, i, j + 1);b[j + 1] = 0;//由于b序列也失败的话,就直接回到了上一层,j的值会减小,这一步其实可以省去}return;
}
int main() {int t;cin >> t;while (t--) {init();for (int i = 1; i <= 10; i++) {cin >> num[i];}DFS(1, 0, 0);if (flag == 1) {cout << "YES" << endl;}else cout << "NO" << endl;}system("pause");return 0;
}
AOJ 0033 Ball 深度优先搜索相关推荐
- 算法细节系列(16):深度优先搜索
算法细节系列(16):深度优先搜索 详细代码可以fork下Github上leetcode项目,不定期更新. 题目均摘自leetcode: 1. 329 Longest Increasing Path ...
- 数据结构深度优先搜索c语言,C语言数据结构与算法之深度、广度优先搜索
一.深度优先搜索(Depth-First-Search 简称:DFS) 1.1 遍历过程: (1)从图中某个顶点v出发,访问v. (2)找出刚才第一个被顶点访问的邻接点.访问该顶点.以这个顶点为新的顶 ...
- [C] 深度优先搜索解决连通块/染色问题——求岛的个数
本文介绍用DFS解决连通块个数问题 有关dfs的介绍见另外一篇:不撞南墙不回头--深度优先搜索 例题 宝岛探险 题目描述 一个小岛由一个主岛和一些复附属岛屿组成,该岛使用一个二维矩阵表示,其中数字表示 ...
- 深度优先搜索_0基础学算法 搜索篇第一讲 深度优先搜索
0基础学算法 搜索篇第一讲 深度优先搜索 相信绝大多数人对于深度优先搜索和广度优先搜索是不会特别陌生的,如果我这样说似乎你没听说过,那如果我说dfs和bfs呢?先不说是否学习过它们,至少它们的大名应该 ...
- leetcode dfs_深度优先搜索:具有6个Leetcode示例的DFS图遍历指南
leetcode dfs Have you ever solved a real-life maze? The approach that most of us take while solving ...
- 【ACM】杭电OJ 1241(深度优先搜索小结)
题目链接:杭电OJ 1241 深度优先搜索问题 深度优先搜索是搜索的手段之一.它从某个状态开始,不断地转移状态直到无法转移,然后回退到前一步的状态,继续转移到其他状态,如此不断重复,直至找到最终的解. ...
- matlab bfs函数,matlab练习程序(广度优先搜索BFS、深度优先搜索DFS)
如此经典的算法竟一直没有单独的实现过,真是遗憾啊. 广度优先搜索在过去实现的二值图像连通区域标记和prim最小生成树算法时已经无意识的用到了,深度优先搜索倒是没用过. 这次单独的将两个算法实现出来,因 ...
- c++输出方块_C/C++编程笔记:DFS 深度优先搜索的基本思想,含实例讲解
采用搜索算法解决问题时,需要构造一个表明状态特征和不同状态之间关系的数据结构,这种数据结构称为结点.不同的问题需要用不同的数据结构描述. 根据搜索问题所给定的条件,从一个结点出发,可以生成一个或多个新 ...
- networkx 有向图强连通_leetcode刷题(四):搜索(深度优先搜索,广度优先搜索)拓扑排序,强连通分量...
在开始今天的话题之前,我们先了解一个概念,什么是图的遍历? 图的遍历就是从图中某一点出发访遍图中其余剩余定点,且每个顶点仅被访问一次,这个过程叫做图的遍历. 图的遍历主要被分为深度优先遍历和广度优先遍 ...
最新文章
- 订单倒计时取消,nodejs 辅助实现倒计时任务
- 基2频率抽取实现FFT的Verilog程序
- glance系列一:glance基础
- 【错误记录】PyCharm 运行 Python 程序报错 ( UnicodeDecodeError: ‘ascii‘ codec can‘t decode byte 0xe5 in positio )
- 【IOC 控制反转】Android 布局依赖注入 ( 布局依赖注入步骤 | 布局依赖注入代码示例 )
- eclipse plugin 菜单
- TCP协议-相关面试题
- c 如何加函数锁linux,Linux下C语言中fcntl函数用法说明
- API3价格流将与Omen预测市场进行集成
- 配置使用4台主机实现12台主机的集群
- 机器人学导论——笔记(1)
- Java对象转Map的解决办法_java对象转map怎么操作?map如何转化成Java对象?
- 微信演示制作软件易企秀的上手体验(图文)
- 转:什么都没有反而可以做得更好
- Python文本挖掘练习(一)// 新闻摘要
- 移动云,中国移动算力网络棋局中的关键一子
- oracle一些基本函数
- 德国金融监管机构:ICO急需国际监管
- 超2t服务器系统,2t云服务器
- 更新Linux维护的PCI硬件数据库,Bus options (PCI etc.)总线选项 - Linux-4.4-x86_64 内核配置选项...