不知道为什么思路都是一样的偶写滴就超时= =

我写的

#include<stdio.h>
#include<string.h>int m,n,x1,y1,flag,key[5],i,j;
char map[20][20],f[20][20];void dfs(int x,int y)
{if(x<0||y<0||x>=m||y>=n||map[x][y]=='X'){return ;}if(map[x][y]=='G'){flag=1;return ;}else if(map[x][y]>='a'&&map[x][y]<='e'){key[map[x][y]-'a']--;map[x][y]='.';}  else if(map[x][y]>='A'&&map[x][y]<='E'){if(key[map[x][y]-'A']==0){map[x][y]='.';}else{return ;}}if(x>=0&&x<m&&y>=0&&y<n&&map[x][y]=='.'){map[x][y]='X';dfs(x-1,y);dfs(x+1,y);dfs(y,y-1);dfs(x,y+1);map[x][y]='.';}return ;
}int main(){while(scanf("%d %d",&m,&n)!=EOF){memset(key,0,sizeof(key));memset(map,0,sizeof(map));if(m==0&&n==0){break;}for(i=0;i<m;i++){scanf("%s",map[i]);for(j=0;j<n;j++){if(map[i][j]=='S'){x1=i;y1=j;}else if(map[i][j]>='a'&&map[i][j]<='e'){key[map[i][j]-'a']++;}}}flag=0;map[x1][y1]='.';dfs(x1,y1);if(flag){printf("YES\n");}else{printf("NO\n");}} return 0;
}

AC滴

#include<stdio.h>
#include<string.h>
char map[25][25];
bool vis[25][25];
bool result;
int key[5];
int curkey[5];
int n,m;
int st_x,st_y;
struct node{int x,y;bool exit;
}door[5];
void check();
void dfs(int x,int y){if(x<0||y<0||x>=m||y>=n||map[x][y]=='X'||vis[x][y]){return ;}if(map[x][y]>='A'&&map[x][y]<='E'&&curkey[map[x][y]-'A']<key[map[x][y]-'A']){door[map[x][y]-'A'].x=x;door[map[x][y]-'A'].y=y;door[map[x][y]-'A'].exit=true;return ;}   vis[x][y]=true;if(map[x][y]>='a'&&map[x][y]<='e')curkey[map[x][y]-'a']++;if(map[x][y]=='G'){result=true;return ;}dfs(x+1,y);dfs(x-1,y);dfs(x,y-1);dfs(x,y+1);check();
}
void check(){for(int i=0;i<5;i++){if(door[i].exit){if(curkey[i]==key[i]){int x=door[i].x;int y=door[i].y;dfs(x+1,y);dfs(x-1,y);dfs(x,y+1);dfs(x,y-1);}}}
}
int main(){while(scanf("%d %d",&m,&n)!=EOF){if(m==0&&n==0){break;}memset(key,0,sizeof(key));memset(map,0,sizeof(map));memset(vis,false,sizeof(vis));memset(&door,0,sizeof(&door));memset(curkey,0,sizeof(curkey));for(int i=0;i<m;i++){for(int j=0;j<n;j++){char ch;scanf(" %c",&ch);map[i][j]=ch;if(ch>='a'&&ch<='e')key[ch-'a']++;if(ch=='S')st_x=i,st_y=j;}}result=false;dfs(st_x,st_y);if(result)printf("YES\n");elseprintf("NO\n");}return 0;
}        

很累...我真的好弱啊= =

NYOJ迷宫寻宝(一)相关推荐

  1. NYOJ 迷宫寻宝(一)

    迷宫寻宝(一) 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 一个叫ACM的寻宝者找到了一个藏宝图,它根据藏宝图找到了一个迷宫,这是一个很特别的迷宫,迷宫里有N个编过号的门 ...

  2. 迷宫寻宝(自编简单版)

    nyoj - 迷宫寻宝(1) 我觉得有点难...我将其改简单一些. 题目描述:与原题基本差不多,但开门条件改一下,每个门只需要一把钥匙即可打开,一把钥匙可以开所有对应的门. 这样就简单很多啦...其实 ...

  3. NYOJ 82:迷宫寻宝(一)(BFS)

    迷宫寻宝(一) 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 一个叫ACM的寻宝者找到了一个藏宝图,它根据藏宝图找到了一个迷宫,这是一个很特别的迷宫,迷宫里有N个编过号 ...

  4. nyoj 81 迷宫寻宝

    迷宫寻宝(一) 时间限制:1000 ms  |  内存限制:65535 KB 难度:4   描述 一个叫ACM的寻宝者找到了一个藏宝图,它根据藏宝图找到了一个迷宫,这是一个很特别的迷宫,迷宫里有N个编 ...

  5. 《搜索》— NYOJ 82 迷宫寻宝(一)

    迷宫寻宝(一) 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 一个叫ACM的寻宝者找到了一个藏宝图,它根据藏宝图找到了一个迷宫,这是一个很特别的迷宫,迷宫里有N个编过号 ...

  6. nyoj82(迷宫寻宝)

    nyoj82(迷宫寻宝) 迷宫寻宝(一) 时间限制: 1000 ms  |  内存限制: 65535 KB 难度: 4 描述 一个叫ACM的寻宝者找到了一个藏宝图,它根据藏宝图找到了一个迷宫,这是一个 ...

  7. 迷宫寻宝(一) 82

    /*迷宫寻宝(一) 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 一个叫ACM的寻宝者找到了一个藏宝图,它根据藏宝图找到了一个迷宫,这是一个很特别的迷宫,迷宫里有N个编 ...

  8. 迷宫寻宝(宽度搜索)(C++)

    迷宫寻宝 题目 一个叫ACM的寻宝者找到了一个藏宝图,它根据藏宝图找到了一个迷宫,不限时间和步数,当然也没有陷阱,请你判断他能不能顺利的得到宝藏. 输入 多组输入 每组测试数据的第一行包含了两个整数M ...

  9. Qt利用深度优先搜索实现迷宫寻宝

    先看效果: 利用QT搭建迷宫界面 利用单选框来构造迷宫,设置障碍物和宝藏的位置 利用深度优先搜索实现迷宫寻宝,并且在寻找的过程中避开障碍物. 搜索算法在线程中进行 定义方格的属性 enum Signa ...

最新文章

  1. [备忘]几种即见即所得Web编辑器优缺点比较
  2. ACM入门之【约数】
  3. Python之web开发(五):WEB开发html语句经典应用
  4. the code place where the binding is converted to final value displayed in u
  5. 【C++深度剖析教程1】C++中的经典问题解析-c++中的对象的构造顺序与析构顺序
  6. 1009. clion调试段错误
  7. ImportError: cannot import name ‘Optional‘
  8. HDU4552 怪盗基德的挑战书【文本处理】
  9. Pytorch——3.1. 热身:Pytorch基础
  10. 代码仓库-SVN分支策略
  11. c语言程序算一元二次方程,以实例跟我学C语言:如何求解一元二次方程的根
  12. 电脑文件无法删除怎么办?
  13. kotlin使用遇到的坑。。。
  14. metricbeat监控mysql_Metricbeat 参考指南(步骤1:安装Metricbeat)
  15. 恶意程序- 安全建议
  16. WTL 窗口自绘 (CQsSkinWindowUI)
  17. 今天将网易博客的内容迁过来
  18. Microsoft Help Viewer无法打开的问题
  19. U盘无法在磁盘管理器中删除,显示不支持该操作的时候可以用以下的办法,亲测可以解决
  20. 【飞桨】Seg:U-Net【2015 MICCAI】论文研读

热门文章

  1. Java爬虫抓取网页数据(抓取慕课网论坛为实例)
  2. 斜杠认识// '\' '/'
  3. GBDT、XGBoost、LightGBM比较
  4. 幼儿园教案我和计算机比本领,幼儿园大班教案《谁的本领大》
  5. 基于神经网络的房屋价格预测
  6. 软件泛指计算机运行,广义地讲,软件泛指计算机运行所需的各种数据、及与之相关的文档资料...
  7. `spyder总是闪退?spyder打不开?spyder又又又又又出错啦?
  8. dnf史诗计算机手机版,DNF手游终于要来了!可端游的史诗级装备该咋办…
  9. 第五章第三十八题(十进制转换八进制)(Decimal to octal)
  10. C#设计模式——组合模式(Composite Pattern)