真的stuck了!为什么只有80分 求大佬解答

写的繁琐点了

#include<iostream>
#include<string>
#include<stack>
#include<cstdio>
using namespace std;
char a[200][200];
int visit[200][200];
int visit1[200][200];
int r,c;
int dx[4]={-1,0,0,1};
int dy[4]={0,1,-1,0};
int leftright[2]={-1,1};
int updown[2]={-1,1};
struct Node
{int x,y;char ch;
};
void BFS(int k,int j)
{int xx,yy;visit[k][j]=1;Node t;Node t1;stack<Node> s;t.x=k;t.y=j;t.ch='S';s.push(t);int i;while(!s.empty()){t=s.top();s.pop();if(t.ch=='S'||t.ch=='T'||t.ch=='+'){for(i=0;i<4;i++){xx=t.x+dx[i];yy=t.y+dy[i];if(xx<0||xx>=r||yy<0||yy>=c)continue;if(visit[xx][yy]==1)continue;if(a[xx][yy]=='#')continue;t1.x=xx;t1.y=yy;t1.ch=a[xx][yy];s.push(t1);visit[xx][yy]=1;}}else if(t.ch=='-'){for(i=0;i<2;i++){xx=t.x;yy=t.y+leftright[i];if(xx<0||xx>=r||yy<0||yy>=c)continue;if(visit[xx][yy]==1)continue;if(a[xx][yy]=='#')continue;t1.x=xx;t1.y=yy;t1.ch=a[xx][yy];s.push(t1);visit[xx][yy]=1;}}else if(t.ch=='|'){for(i=0;i<2;i++){xx=t.x+updown[i];yy=t.y;if(xx<0||xx>=r||yy<0||yy>=c)continue;if(visit[xx][yy]==1)continue;if(a[xx][yy]=='#')continue;t1.x=xx;t1.y=yy;t1.ch=a[xx][yy];s.push(t1);visit[xx][yy]=1;}}else if(t.ch=='.'){xx=t.x+1;yy=t.y;if(xx<0||xx>=r||yy<0||yy>=c)continue;if(visit[xx][yy]==1)continue;if(a[xx][yy]=='#')continue;t1.x=xx;t1.y=yy;t1.ch=a[xx][yy];s.push(t1);visit[xx][yy]=1;}}
}
void initial()
{int i,j;for(i=0;i<r;i++)for(j=0;j<c;j++)visit1[i][j]=0;
}
void BFS1(int k,int j)
{int xx,yy;visit1[k][j]=1;Node t;Node t1;int i;stack<Node> s;t.x=k;t.y=j;t.ch=a[k][j];s.push(t);while(!s.empty()){t=s.top();s.pop();if(t.ch=='S'||t.ch=='T'||t.ch=='+'){for(i=0;i<4;i++){xx=t.x+dx[i];yy=t.y+dy[i];if(xx<0||xx>=r||yy<0||yy>=c)continue;if(visit1[xx][yy]==1)continue;if(a[xx][yy]=='#')continue;t1.x=xx;t1.y=yy;t1.ch=a[xx][yy];s.push(t1);visit1[xx][yy]=1;}}else if(t.ch=='-'){for(i=0;i<2;i++){xx=t.x;yy=t.y+leftright[i];if(xx<0||xx>=r||yy<0||yy>=c)continue;if(visit1[xx][yy]==1)continue;if(a[xx][yy]=='#')continue;t1.x=xx;t1.y=yy;t1.ch=a[xx][yy];s.push(t1);visit1[xx][yy]=1;}}else if(t.ch=='|'){for(i=0;i<2;i++){xx=t.x+updown[i];yy=t.y;if(xx<0||xx>=r||yy<0||yy>=c)continue;if(visit1[xx][yy]==1)continue;if(a[xx][yy]=='#')continue;t1.x=xx;t1.y=yy;t1.ch=a[xx][yy];s.push(t1);visit1[xx][yy]=1;}}else if(t.ch=='.'){xx=t.x+1;yy=t.y;if(xx<0||xx>=r||yy<0||yy>=c)continue;if(visit1[xx][yy]==1)continue;if(a[xx][yy]=='#')continue;t1.x=xx;t1.y=yy;t1.ch=a[xx][yy];s.push(t1);visit1[xx][yy]=1;}}
}
int main()
{cin>>r>>c;int i,j;int x,y;for(i=0;i<r;i++)scanf("%s",a[i]);for(i=0; i<r; i++)for(j=0; j<c; j++){if(a[i][j]=='S'){BFS(i,j);}else if(a[i][j]=='T'){x=i;y=j;}}if(visit[x][y]==1){int cnt=0;for(i=0;i<r;i++)for(j=0;j<r;j++){if(visit[i][j]==1){initial();BFS1(i,j);if(visit1[x][y]==0)cnt++;}}cout<<cnt<<endl;}else cout << "I'm stuck!" << endl;return 0;
}

CCFI’m stuck!相关推荐

  1. I'm stuck! ccf模拟题。

    ccf模拟题. I'm stuck! 时间限制: 1.0s 内存限制: 256.0MB 问题描述 给定一个R行C列的地图,地图的每一个方格可能是'#', '+', '-', '|', '.', 'S' ...

  2. CCF201312-5 I’m stuck!(100分)

    试题编号: 201312-5 试题名称: I'm stuck! 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 给定一个R行C列的地图,地图的每一个方格可能是'#', '+', ...

  3. CSP认证201312-5 I’m stuck![C++题解]:dfs、两次dfs

    文章目录 题目解答 题目链接 题目解答 来源:acwing 分析: 条件1:可以从起点走到该点.用st1[][]数组表示能否从起点到达该点. 条件2:不可以从该点走到终点. 对于条件2的处理:从终点反 ...

  4. 遇到“BUG: soft lockup - CPU#0 stuck for 22s”的解决思路

    之前开发的抓包模块上线后有客户反馈有丢包问题,这两天在定位这个丢包问题,抓包模块由我和另一名"队友"负责,我负责底层抓包开发,他负责接收处理.在测试丢包问题的时候,他遇到一个板子连 ...

  5. 解决11g Rac实例状态为Stuck Archiver

    解决实例stuck Archiver 其实,这个问题非常好解决,其原因就是因为,数据库开启了归档且归档日志目录满导致的. 还有一种原因,通常,我们使用fast recovery area作为归档日志的 ...

  6. stick和stuck的区别_怎样区别“stick to”、“stick with”和“stick by”这三个表达?...

    我小时候有一次把口香糖粘到头发里去了. Verb form: stick, stuck, stuck Verb form: stick, stuck, stuck 动词形式:stick, stuck( ...

  7. 201312-5 I’m stuck!

    问题描述 给定一个R行C列的地图,地图的每一个方格可能是'#', '+', '-', '|', '.', 'S', 'T'七个字符中的一个,分别表示如下意思: '#': 任何时候玩家都不能移动到此方格 ...

  8. 搜索——I’m stuck!(ccf)

    题目描述: 给定一个R行C列的地图,地图的每一个方格可能是'#', '+', '-', '|', '.', 'S', 'T'七个字符中的一个,分别表示如下意思: '#': 任何时候玩家都不能移动到此方 ...

  9. CCF201312-5 I’m stuck

    问题描述: 试题编号: 201312-5 试题名称: I'm stuck! 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 给定一个R行C列的地图,地图的每一个方格可能是'#' ...

最新文章

  1. 函数计算工具链新成员 —— Fun Local 发布啦
  2. 玩转VIM编辑器-vim附加特性
  3. SAP CDS entity 中使用 @readonly 进行访问控制
  4. linux系统原理是什么意思,Linux系统原理之整体概述
  5. mysql和jfinal的区别_mysql与JFinal的数据关系-阿里云开发者社区
  6. 【ElasticSearch】如何使用 ElasticSearch 搜索单词的一部分 模糊搜索 正则匹配 前缀匹配
  7. Python源码深度解析—float空闲对象缓存池
  8. Acrobat Pro DC 2022 Mac(全能PDF工具)完美兼容m1
  9. xml笔记(马士兵)
  10. Android10(Q,API-29)以上版本无法在存储卡目录创建文件夹的问题
  11. JSP 页面实现一个计算器功能
  12. 选用计算机教材的理由原因,教材选用及管理规定
  13. 无线连接网络找不到计算机组,Win10电脑找不到自家Wifi无线网络解决方法 可能是无线信道问题...
  14. mac搜索不到wifi wtg_Mac连不上WiFi怎么办?Mac连不上无线网络解决办法
  15. 微信小程序返回上一页各种方法
  16. 什么是精灵图?如何使用精灵图
  17. PLL 锁相环原理介绍
  18. 无法安装冰点还原_电脑无法开机,重装系统太麻烦?不如试试直接备份恢复系统...
  19. Seurat对象查看data错误
  20. 单片机音频节奏灯_音乐节奏灯(十个LED显示)

热门文章

  1. Revit中创建分段剖面视图
  2. 5纳米芯片推力电池续航能力提升
  3. html漂亮的动态背景切换
  4. angular5 的angular-cli修改端口号
  5. 在windows下使用MSVC编译ffmpeg
  6. MATLAB 自然样条函数(约束两端斜率)
  7. 带你了解软件版本号的命名规则
  8. 随机森林分类算法python代码_独家 | 一文读懂随机森林的解释和实现(附python代码)...
  9. android平板设计规范,安卓pad设计规范.docx
  10. 网络安全 DNSSEC HTTPDNS