HDOJ1181变形课 深搜回溯
变形课
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/65536 K (Java/Others)
Total Submission(s): 18474 Accepted Submission(s): 6663
Problem Description
呃……变形课上Harry碰到了一点小麻烦,因为他并不像Hermione那样能够记住所有的咒语而随意的将一个棒球变成刺猬什么的,但是他发现了变形咒语的一个统一规律:如果咒语是以a开头b结尾的一个单词,那么它的作用就恰好是使A物体变成B物体.
Harry已经将他所会的所有咒语都列成了一个表,他想让你帮忙计算一下他是否能完成老师的作业,将一个B(ball)变成一个M(Mouse),你知道,如果他自己不能完成的话,他就只好向Hermione请教,并且被迫听一大堆好好学习的道理.
Input
测试数据有多组。每组有多行,每行一个单词,仅包括小写字母,是Harry所会的所有咒语.数字0表示一组输入结束.
Output
如果Harry可以完成他的作业,就输出”Yes.”,否则就输出”No.”(不要忽略了句号)
Sample Input
so
soon
river
goes
them
got
moon
begin
big
0
Sample Output
Yes.
HintHint
Harry 可以念这个咒语:”big-got-them”.
这个代码还是很容易理解的,经典的DFS
不过对于没超时,我感到意外哈
我是从m往b搜索的
#include<stdlib.h>
#include<stdio.h>
#include <string.h>
using namespace std;
char a[1000][50];
int len[1000];
int k;int flag;
bool vis[1000];
void dfs(char x)
{if(x=='b'){flag=1;return ;}if(flag==1){return;}for(int i=0;i<k;i++){//printf("vis[%d]=%d\n",i,vis[i]);if(vis[i]==0){if(a[i][len[i]]==x){// printf("a[%d][%d]=%c\n",i,len[i],a[i][len[i]]);vis[i]=1;// printf("x=%c\n",x);dfs(a[i][0]);// printf("x=%c\n",x);vis[i]=0;}}}
}
int main()
{while(scanf("%s",a[0])!=EOF){flag=0;int i=0;if(a[0][0]=='0'){printf("no.\n");continue;}memset(vis,0,sizeof(vis));while(a[i][0]!='0'){len[i]=strlen(a[i])-1;i++;scanf("%s",a[i]);}k=i;dfs('m');if(flag==1)printf("Yes.\n");elseprintf("No.\n");}
}
下面这段代码是从b往m搜索的,差不多
#include<stdlib.h>
#include<stdio.h>
#include <string.h>
using namespace std;
char a[1000][50];
int len[1000];
int k;int flag;
bool vis[1000];
void dfs(char x)
{if(x=='m'){flag=1;return ;}if(flag==1){return;}for(int i=0;i<k;i++){//printf("vis[%d]=%d\n",i,vis[i]);if(vis[i]==0){if(a[i][0]==x){// printf("a[%d][%d]=%c\n",i,len[i],a[i][len[i]]);vis[i]=1;// printf("x=%c\n",x);dfs(a[i][len[i]]);// printf("x=%c\n",x);vis[i]=0;}}}
}
int main()
{while(scanf("%s",a[0])!=EOF){flag=0;int i=0;if(a[0][0]=='0'){printf("no.\n");continue;}memset(vis,0,sizeof(vis));while(a[i][0]!='0'){len[i]=strlen(a[i])-1;i++;scanf("%s",a[i]);}k=i;dfs('b');if(flag==1)printf("Yes.\n");elseprintf("No.\n");}
}
转载于:https://www.cnblogs.com/webmen/p/5739709.html
HDOJ1181变形课 深搜回溯相关推荐
- 迷宫之深搜回溯算法(B站)
迷宫之深搜回溯算法 题目描述 核心思路 用char Map0[9][9][9][9][9][9]来存储题目给定的地图,由于是它的数组下标是从0开始的,但是我们想把点的坐标从1开始,所以我们可以对原地图 ...
- 深搜+回溯+广搜小结
深搜 按照一定的顺序和规则,一直往深处走,直到走不通再返回,换一种路径重复上述步骤. 深搜一般可以找到问题的所有答案,但问题规模较大时,解集树的深度就会比较大并且比较宽,时间复杂度就会较高.与广搜相比 ...
- 部分和(dfs深搜回溯法)
问题描述 给定整数序列a1,a2,.,an,判断是否可以从中选出若干数,使它们的和恰好为k, 1<=n<=20 -10^8<=ai<=10^8 -10^8<=k<= ...
- 深搜回溯与不回溯的区别
一.需要不断尝试以达到最终目的时需要回溯,比如数独.全排列. 以下为全排列代码: #include <iostream> #include <vector> #include ...
- [蓝桥杯][算法训练VIP]摆动序列(深搜+回溯||动态规划)
题目描述 如果一个序列满足下面的性质,我们就将它称为摆动序列: 序列中的所有数都是不大于k的正整数: 序列中至少有两个数. 序列中的数两两不相等: 如果第i – 1个数比第i – 2个数大,则第i个数 ...
- [蓝桥杯][算法训练VIP]王、后传说(深搜+回溯)
题目描述 地球人都知道,在国际象棋中,后如同太阳,光芒四射,威风八面,它能控制横.坚.斜线位置. 看过清宫戏的中国人都知道,后宫乃步步惊心的险恶之地.各皇后都有自己的势力范围,但也总能找到相安无事的办 ...
- 子集和问题 深搜回溯法
我的哔哩哔哩账号 4.子集和问题 [问题描述] 子集和问题的一个实例为<S,t>.其中,S={ x1,x2,-,xn}是一个正整数的集合,c是一个正整数.子集和问题判定是否 ...
- 数独游戏-蓝桥杯-C语言,数独游戏_java_深搜+回溯
问题描述 你一定听说过"数独"游戏. 如[图1.png],玩家需要根据9×9盘面上的已知数字,推理出所有剩余空格的数字,并满足每一行.每一列.每一个同色九宫内的数字均含1-9,不重 ...
- HDU ACM 1181 变形课 (广搜BFS + 动态数组vector)-------第一次使用动态数组vector
http://acm.hdu.edu.cn/showproblem.php?pid=1181 题意:给我若干个单词,若单词A的结尾与单词B的开头相同,则表示A能变成B,判断能不能从b开头变成m结尾. ...
- 马走日-深搜回溯-超好懂题解
马在中国象棋以日字形规则移动. 请编写一段程序,给定n*m大小的棋盘,以及马的初始位置(x,y),要求不能重复经过棋盘上的同一个点,计算马可以有多少途径遍历棋盘上的所有点. Input 第一行为整数T ...
最新文章
- rabbitmq 查询版本_基于rabbitmq解决分布式事务
- [JavaWeb基础] 007.Struts2的配置和简单使用
- 雅特力415开发资料_雅特力在车用电子领域 AT32 MCU应用于ADAS环视系统
- RabbitMQ 一二事 - 简单队列使用
- a标签居中 img vue_Vue中img的src属性绑定与static文件夹实例
- spark-1.6.0-cdh5.15.1环境搭建:Local模式和StandAlone
- webbrowser中localhost和发布的地址_004、Spring Boot中的项目属性配置
- 关于module_param()宏
- 威逼司机二选一,是滴滴垄断,还是嘀嗒碰瓷?
- 随手练—— 洛谷-P2945 Sand Castle(贪心)
- python爬虫哪个选择器好用_Python爬虫学习8-css选择器使用
- Qt日历控件显示周数为:日一二三四五六
- 怎么将mov格式转换成mp4?
- 阿里云服务器ubuntu 16.04 安装mysql
- STP-16-根防护,BPDU防护和BPDU过滤
- 2021-04-28 Mac上插入公式的三种方法
- 第四章:磁盘和SSD基础知识(提供原稿)
- 不要跌入孤独寂寞的陷阱
- 【STDC】《Rethinking BiSeNet For Real-time Semantic Segmentation》
- lol手游服务器维护到什么时候,lol10.1版本维护到几点 lol维护公告最新2020
热门文章
- python源码中的学习笔记_第11章_模块与包
- 【ACL2021】主会571篇长文分类最全汇总
- CS224N笔记(十):问答系统
- 【python】59个Python使用技巧,从此你的Python与众不同(一)
- 十分钟一起学会ResNet残差网络
- 论文赏析[AAAI18]面向序列建模的元多任务学习
- numpy-np.random.choice
- TF2.0-tf.keras.layers.Concatenate
- SpringCloud Eureka 高可用
- 区块链的本质是什么?写给区块链的未来十年