搜索---HDU 1181 变形课
来源:互联网 发布:excel表格查重复的数据 编辑:程序博客网 时间:2024/06/05 15:20
简单深搜:先判定一下有没有m结尾的单词,然后再dfs,注意记录一下已经被挑选过的单词。
代码如下:
#include<iostream>
#include<stdio.h>
#include<string.h>
using namespace std;
int n, use[1111];
char str[1111][1111];
int key;
void dfs(int a) {
int len;
len = strlen(str[a]);
if (str[a][len - 1] == 'm') { //如果这个单词本身就是以m结尾
key = 1;
return;
}
for (int i = 0; i < n; i++) { //从第一个单词开始寻找
if (str[i][0] == str[a][len - 1] && use[i] == 0) { //如果第i个单词的开头与第a个单词的结尾相等,且没有找过
use[i] = 1; //标记为已找过
dfs(i);
use[i] = 0; //关键点,如果从第i个单词搜一遍不符合,则要将其标为没走过
}
}
}
int main() {
while (scanf("%s", str[0]) != EOF) {
memset(use, 0, sizeof(use));
int i, flag = 0;
n = 1, key = 0;
while (1) { //循环输入单词,直到遇到0位置
scanf("%s", str[n]);
int len;
len = strlen(str[n]);
if (str[n][len - 1] == 'm') //如果存在以m结尾的单词,进行标记
flag = 1;
if (str[n][0] == '0')
break;
n++;
}
if (!flag) //如果不存在以m结尾的单词,直接输出No.
printf("No.\n");
else
{ //如果存在以m结尾的单词
for (int i = 0; i < n; i++)
{ //从第一个单词开始搜索以b开头的单词
if (str[i][0] == 'b')
dfs(i);
}
if (key) //如果可以找到收尾相连的单词组合
printf("Yes.\n");
else
printf("No.\n");
}
}
system("pause");
return 0;
}
- 搜索---HDU 1181 变形课
- HDU 1181 变形课 深度优先搜索(DFS)简单题
- hdu 1181 变形课 (dfs)简单搜索
- hdu 1181变形课 搜索水题 dfs
- hdu 变形课(简单搜索)
- hdu 1181 变形课
- HDU 1181 变形课
- hdu 1181 变形课
- hdu 1181 变形课
- HDU 1181 变形课
- hdu 1181 变形课
- hdu 1181 变形课
- hdu 1181 变形课
- HDU 1181 变形课
- hdu 1181 变形课
- 变形课 hdu 1181
- hdu-1181-变形课
- HDU 1181 变形课
- Oracle中left join中右表的限制条件
- 初识Makefile
- 关于CoordinatorLayout和Toolbar的用法
- 算法及其分析
- 效率问题
- 搜索---HDU 1181 变形课
- RabbitMQ学习小结(六)----远程调用
- 响应式轮播图片,,图片包裹层,图片定位 大小,等属性设置
- Linux下的C语言编程——10进制转16进制和二进制
- Spring Boot+Mybatis 入门Demo
- [UOJ#246][UER#7C]套路
- nyoj 进制转换
- Android-Lint工具使用
- Windows 和 Linux 的IPC API对应表