变形课
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变形课 深搜回溯相关推荐

  1. 迷宫之深搜回溯算法(B站)

    迷宫之深搜回溯算法 题目描述 核心思路 用char Map0[9][9][9][9][9][9]来存储题目给定的地图,由于是它的数组下标是从0开始的,但是我们想把点的坐标从1开始,所以我们可以对原地图 ...

  2. 深搜+回溯+广搜小结

    深搜 按照一定的顺序和规则,一直往深处走,直到走不通再返回,换一种路径重复上述步骤. 深搜一般可以找到问题的所有答案,但问题规模较大时,解集树的深度就会比较大并且比较宽,时间复杂度就会较高.与广搜相比 ...

  3. 部分和(dfs深搜回溯法)

    问题描述 给定整数序列a1,a2,.,an,判断是否可以从中选出若干数,使它们的和恰好为k, 1<=n<=20 -10^8<=ai<=10^8 -10^8<=k<= ...

  4. 深搜回溯与不回溯的区别

    一.需要不断尝试以达到最终目的时需要回溯,比如数独.全排列. 以下为全排列代码: #include <iostream> #include <vector> #include ...

  5. [蓝桥杯][算法训练VIP]摆动序列(深搜+回溯||动态规划)

    题目描述 如果一个序列满足下面的性质,我们就将它称为摆动序列: 序列中的所有数都是不大于k的正整数: 序列中至少有两个数. 序列中的数两两不相等: 如果第i – 1个数比第i – 2个数大,则第i个数 ...

  6. [蓝桥杯][算法训练VIP]王、后传说(深搜+回溯)

    题目描述 地球人都知道,在国际象棋中,后如同太阳,光芒四射,威风八面,它能控制横.坚.斜线位置. 看过清宫戏的中国人都知道,后宫乃步步惊心的险恶之地.各皇后都有自己的势力范围,但也总能找到相安无事的办 ...

  7. 子集和问题 深搜回溯法

    我的哔哩哔哩账号 4.子集和问题 [问题描述]         子集和问题的一个实例为<S,t>.其中,S={ x1,x2,-,xn}是一个正整数的集合,c是一个正整数.子集和问题判定是否 ...

  8. 数独游戏-蓝桥杯-C语言,数独游戏_java_深搜+回溯

    问题描述 你一定听说过"数独"游戏. 如[图1.png],玩家需要根据9×9盘面上的已知数字,推理出所有剩余空格的数字,并满足每一行.每一列.每一个同色九宫内的数字均含1-9,不重 ...

  9. HDU ACM 1181 变形课 (广搜BFS + 动态数组vector)-------第一次使用动态数组vector

    http://acm.hdu.edu.cn/showproblem.php?pid=1181 题意:给我若干个单词,若单词A的结尾与单词B的开头相同,则表示A能变成B,判断能不能从b开头变成m结尾. ...

  10. 马走日-深搜回溯-超好懂题解

    马在中国象棋以日字形规则移动. 请编写一段程序,给定n*m大小的棋盘,以及马的初始位置(x,y),要求不能重复经过棋盘上的同一个点,计算马可以有多少途径遍历棋盘上的所有点. Input 第一行为整数T ...

最新文章

  1. rabbitmq 查询版本_基于rabbitmq解决分布式事务
  2. [JavaWeb基础] 007.Struts2的配置和简单使用
  3. 雅特力415开发资料_雅特力在车用电子领域 AT32 MCU应用于ADAS环视系统
  4. RabbitMQ 一二事 - 简单队列使用
  5. a标签居中 img vue_Vue中img的src属性绑定与static文件夹实例
  6. spark-1.6.0-cdh5.15.1环境搭建:Local模式和StandAlone
  7. webbrowser中localhost和发布的地址_004、Spring Boot中的项目属性配置
  8. 关于module_param()宏
  9. 威逼司机二选一,是滴滴垄断,还是嘀嗒碰瓷?
  10. 随手练—— 洛谷-P2945 Sand Castle(贪心)
  11. python爬虫哪个选择器好用_Python爬虫学习8-css选择器使用
  12. Qt日历控件显示周数为:日一二三四五六
  13. 怎么将mov格式转换成mp4?
  14. 阿里云服务器ubuntu 16.04 安装mysql
  15. STP-16-根防护,BPDU防护和BPDU过滤
  16. 2021-04-28 Mac上插入公式的三种方法
  17. 第四章:磁盘和SSD基础知识(提供原稿)
  18. 不要跌入孤独寂寞的陷阱
  19. 【STDC】《Rethinking BiSeNet For Real-time Semantic Segmentation》
  20. lol手游服务器维护到什么时候,lol10.1版本维护到几点 lol维护公告最新2020

热门文章

  1. python源码中的学习笔记_第11章_模块与包
  2. 【ACL2021】主会571篇长文分类最全汇总
  3. CS224N笔记(十):问答系统
  4. 【python】59个Python使用技巧,从此你的Python与众不同(一)
  5. 十分钟一起学会ResNet残差网络
  6. 论文赏析[AAAI18]面向序列建模的元多任务学习
  7. numpy-np.random.choice
  8. TF2.0-tf.keras.layers.Concatenate
  9. SpringCloud Eureka 高可用
  10. 区块链的本质是什么?写给区块链的未来十年