一开始确实是我的锅,我把题意理解错了,以为是一个q周围没有q的时候才可以当时qu,其实是只要碰到q,他就是qu,所以我们也可以通过预处理的方式,把字典中的不满足qu连在一起的直接去掉。

  后来的各种TIE我就表示不能理解了……我换了好多个姿势,改了各种各样的形式,最后改的快跟学长一模一样了,还是TLE……WTF,真是见了鬼了,最后我发现学长的代码里,字符串的长度没有作为参数传进去,而是在里面直接计算的,我的是把长度计算好了,存起来,直接传参进入递归。结果还真就是因为这个,TLE了,我把这个参数去了以后用各种编译器都是3msAC。加上去以后就各种超时……至于是为什么……我现在还不知道,你们要是有谁知道告诉我一声啊…… 反正以后我也会注意这方面的原因,在深搜里,尽量少放参数……

  总体来说,题目并不难,只是我入坑了……

代码如下:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
#define N 20
string dic[];
int w,D,go[][] = {{,},{-,},{,-},{,},{-,-},{-,},{,-},{,}};
int vis[N][N];
char maps[N][N];
bool flag;
void dfs(int k,int num,int nowx,int nowy)
{
if(flag) return;
int len = dic[k].length();
if(maps[nowx][nowy] == 'q')
{
if(num+<len && dic[k][num+] == 'u')
num++;
else return;
}
if(num == len-)
{
flag = true;
return ;
}
int xx,yy;
vis[nowx][nowy] = ;
for(int i = ; i < ; i++)
{
xx = nowx + go[i][];
yy = nowy + go[i][];
if(xx>=&&xx<D&&yy>=&&yy<D && maps[xx][yy] == dic[k][num+] && !vis[xx][yy])
{
dfs(k,num+,xx,yy);
}
}
vis[nowx][nowy] = ;
}
bool can_out(int k)
{
for(int i = ; i < D; i++)
{
for(int j = ; j < D; j++)
{
if(dic[k][] == maps[i][j])
{
flag = false;
memset(vis,,sizeof(vis));
dfs(k,,i,j);
if(flag) return true;
}
}
}
return false;
}
int main()
{
// freopen("I.in.cpp","r",stdin);
while(~scanf("%d",&w) && w)
{
for(int i = ; i < w; i++)
{
cin>>dic[i];
}
sort(dic,dic+w);
while(~scanf("%d",&D))
{
if(D==) break;
for(int i = ; i < D; i++)
{
scanf("%s",maps[i]);
}
for(int i = ; i < w; i++)
{
if(can_out(i)) cout<<dic[i]<<endl;
}
puts("-");
}
}
return ;
}

UVALive 7299 Boggle(深搜的姿势)的更多相关文章

  1. uvalive 7299 Boggle

    Boggle is a game in which 16 dice with letters on each side are placed into a 4 × 4 grid. Players th ...

  2. UVALive 6948 Jokewithpermutation 深搜

    题意就是把一段序列拆成从1到n的形式 一开始暴力了一下 后来发现bug太多一定是思路不对…… #include<stdio.h> #include<iostream> #inc ...

  3. UVALive 2053 Puzzlestan(深搜+技巧)

    这个题目的深搜形式,我也找出来了,dfs(i,j)表示第i个人选到了第j个物品,但是我却无限RE了,原因是我的viod型深搜太过暴力,我当时定义了一个计数器,来记录并限制递归的层数,发现它已经递归到了 ...

  4. UVALive 2403 77377解题报告(深搜)

    题意:给你一些固定的字符串,在给出数字,根据键盘的对应关系,输出所有的满足条件的字符串,输出顺序无所谓. 思路:因为题目说了,输出比较小,说明测试数据并不强,所以可以暴力回溯求出答案,将所有的给出的字 ...

  5. HDU--杭电--1195--Open the Lock--深搜--都用双向广搜,弱爆了,看题了没?语文没过关吧?暴力深搜难道我会害羞?

    这个题我看了,都是推荐的神马双向广搜,难道这个深搜你们都木有发现?还是特意留个机会给我装逼? Open the Lock Time Limit: 2000/1000 MS (Java/Others)  ...

  6. 利用深搜和宽搜两种算法解决TreeView控件加载文件的问题。

    利用TreeView控件加载文件,必须遍历处所有的文件和文件夹. 深搜算法用到了递归. using System; using System.Collections.Generic; using Sy ...

  7. 2016弱校联盟十一专场10.3---Similarity of Subtrees(深搜+hash、映射)

    题目链接 https://acm.bnu.edu.cn/v3/problem_show.php?pid=52310 problem description Define the depth of a ...

  8. 2016弱校联盟十一专场10.2---Around the World(深搜+组合数、逆元)

    题目链接 https://acm.bnu.edu.cn/v3/problem_show.php?pid=52305 problem  description In ICPCCamp, there ar ...

  9. 2015暑假多校联合---Cake(深搜)

    题目链接:HDU 5355 http://acm.split.hdu.edu.cn/showproblem.php?pid=5355 Problem Description There are m s ...

随机推荐

  1. From windows live writer

    天线数据长度: 4*14*9664*4 = 2164736 信道估计长度: 614400 均衡: 12*1200*4 = 57600

  2. C语言 - 预编译

    1.#ifdef 实现 与 或#if (defined SIMULATION) && (defined _FMM_LOG)#endif #if (!defined A) || (!de ...

  3. [ An Ac a Day ^_^ ] hdu 1662 Trees on the level 数据结构 二叉树

    紫书上的原题 正好学数据结构拿出来做一下 不知道为什么bfs的队列一定要数组模拟…… 还可以练习一下sscanf…… #include<stdio.h> #include<iostr ...

  4. 利用PYTHON设计计算器功能

    通过利用PYTHON 设计处理计算器的功能如: 1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 ))- (-4*3 ...

  5. 汇总jQuery的61种选择器及示例

    汇总jQuery的61种选择器及示例 恋痿喃 ㄍń稀广 因罘乐睽 ú燔蒇 骤幄觳 ч豹 齑骝氮铷 宅廓Ω孓 锏遒 荛猩ㄜ彬 芡钷ж ┊贩错鹌 掩饰着可还是几步就窜到了门口看着这个让她 ...

  6. ValueStack背后的OGNL表达式

    原文地址:http://blog.csdn.net/li_tengfei/archive/2010/12/25/6098134.aspx 前言: Strut2的Action类通过属性可以获得所有相关的 ...

  7. NodeJS 学习笔记一

    他创造NodeJS的目的是为了实现高性能Web服务器,他首先看重的是事件机制和异步IO模型的优越性,而不是JS.但是他需要选择一种编程语言实现他的想法,这种编程语言不能自带IO功能,并且需要能良好支持 ...

  8. MFC实现登录对话框连接access数据库方式

    编写一个简单的登录对话框 大家好,我们利用MFC编写一个简单的登录对话框.主窗体是单文档界面.程序运行的时候,先弹出一个简单的登录对话框,输入用户名和密码后主窗体显示出来. 1.开打VC++6.0.点 ...

  9. c专家编程---优先级规则

    对于一些复杂的类型组合,总是搞不明白,今天阅读了“优先级规则”这块,有了进一步的理解,特将规则记在此处,供自己学习查询使用. 优先级规则: A.声明从它的名字开始读取,然后按照优先级顺序依次读取 B. ...

  10. 使用AOP 使C#代码更清晰

    简介 如果你很熟悉面向方面编程(AOP),你就会知道给代码增加"切面"可以使代码更清晰并且具有可维护性.但是AOP通常都依赖于第三方类库或者硬编码的.net特性来工作.虽然这些实现 ...