PTA -打死我也不说 (大学Mooc周强数据结构习题集)
//P4 打死我也不说
//若藏有“DSWYBS”,则这串字母必是沿行、列或斜45度方向依次排列的。
#include<iostream>
#include<vector>
using namespace std;
int r,l,x[6],y[6],index=0;
string zfca="DSWYBS";
vector<string> v;
int xbx[8]={0,0,-1,-1,1,1,-1,1};
int xby[8]={-1,1,1,-1,-1,1,0,0};
bool flag=false;
void ss(int i,int j,char c)
{
// cout<<"c="<<c<<endl;
// cout<<"zfca[index]="<<zfca[index]<<endl;for(int m=0;m<8;m++)//还有把循环展开也是答案错误{int xn,yn;xn=i+xbx[m];yn=j+xby[m];if(v[xn][yn]==zfca[index])// char c即为zfca[index] 为何把zfca[index]替换成 c就答案错误??
// if(v[xn][yn]==c){
// if(c==zfca[index])
// cout<<"c="<<c<<" zfca[index]="<<zfca[index]<<endl;x[index]=xn;y[index]=yn;index++;if(index==6){flag=true;return;}ss(xn,yn,zfca[index]);}}return ;
}
int main()
{cin>>r>>l;string zfc;for(int i=0;i<5;i++)v.push_back(" ");for(int i=0;i<r;i++){string zfc1=" ";cin>>zfc;zfc1+=zfc;zfc1+=" ";v.push_back(zfc1);}for(int i=0;i<5;i++)v.push_back(" ");for(int i=5;i<r+5;i++){for(int j=5;j<zfc.length()+5;j++){if(v[i][j]=='D'){x[0]=i;y[0]=j;index=1;ss(i,j,zfca[index]);if(flag){cout<<x[0]-5<<" "<<y[0]-5<<endl;cout<<x[5]-5<<" "<<y[5]-5<<endl;cout<<x[0]+x[5]+y[0]+y[5]-20<<endl;return 0;} }}}cout<<"DSWYBS\n";
}
本人最开始写的时候,并没有考虑题目给定的提示:若藏有“DSWYBS”,则这串字母必是沿行、列或斜45度方向依次排列的。于是就像五子棋一样,以为找到这个字符串就完事了,然后写完提交才发现这样是过不了的。然后就继续硬写,发现只是用单纯的循环好像过于复杂了。于是就看了一下别人的博客。
以下链接就是那位大佬的博客了
https://blog.csdn.net/qq_43331910/article/details/100631060
“深度优先”,这是一个最大的提示了。然后就考虑在找到一个字符的基础上,调用函数寻找下一个字符。就这样写下去,样例显然很好就过了,然后提交试试。
vector当然是可以各种替换的了,只是本人最近练习一下容器,才用的这个。
Now:Here is the question.
1:最初的代码就是在贴的代码那里改了一下,把循环展开成8个if语句。本人一直觉得是等效的,但是就是16分,我也搞不懂为啥。
2:函数里面的char c显然是恒等于 zfca[index]的,但是本人把第21 22行互相替换,发现改了以后提交又是16分。真是玄学了。
PS:链接里面那位同学是真的大佬,思路清晰,代码简洁。
大佬的代码只有60行,我的代码最初就是他的2倍多。
本人就是在数次比对修改后才发觉最后那一点究竟错在哪里,但至今不明白那一点为什么是错的。
顺便吐槽一下,PTA上,经常我用cin输入string就过不了,非得用scanf输入char数组才行
PTA -打死我也不说 (大学Mooc周强数据结构习题集)相关推荐
- mooc数据结构与算法python版期末测验_中国大学MOOC(慕课)_数据结构与算法Python版_测试题及答案...
中国大学MOOC(慕课)_数据结构与算法Python版_测试题及答案 更多相关问题 采用fopen()函数打开文件,支持文件读取的参数有: [简答题]简单阐述高分子材料热-机械特征及成型加工的关系,并 ...
- mooc数据结构与算法python版第十周作业_中国大学mooc慕课_数据结构与算法Python版_章节答案...
新入对于接诊人的院病与查房,中国章节在多必须经治间内进行医师长时. 大学答案高的主要文库日常利用率较有(. 须注下问题:慕课意以,者以知识作为的投资产权出资.在配置上电装,该装装在置(线应部位)的接地 ...
- PTA 打死我也不说
深度优先,因为目标有顺序所以不需要mark数组 #include <stdlib.h> #include <stdio.h> #include <iostream> ...
- 中国大学mooc 北京大学张铭-数据结构与算法-内排序部分满分答案
错误的俩个,第一个是抄错了倒数第二个数字,自己更正就好 第二个是最少7趟,因为优化的冒泡,可以在判断出已经排好序之后就不再冒泡了
- 重磅!Science发表西湖大学周强实验室关于“新冠”的最新研究成果
本文来源:西湖大学WestlakeUniversity 作者/冯 怡 美国东部时间2020年3月4日上午10点左右,Science杂志在线发表了题为Structural basis for t ...
- 中国大学MOOC哈工大C语言程序设计第9周编程题在线测试
中国大学MOOC哈工大C语言程序设计第9周编程题在线测试 1.重复数字检查(4分) 题目内容: 从键盘输入一个数,检查这个数中是否有重复出现的数字.如果这个数中有重复出现的数字,则显示"Re ...
- 中国大学 MOOC 课程Python语言程序设计 (第11期)测试答案(1-5周)
中国大学 MOOC 课程Python语言程序设计 (第11期)测试答案(1-5周) Lan 2020-05-03 14:21 369 人阅读 0 条评论 感谢中国大学MOOC提供的学习平台 ...
- 中国大学MOOC课程《Python语言程序设计》课后练习第一周
中国大学MOOC课程<Python语言程序设计>课后练习第一周 1.字符串拼接 python从2.6版本后增加了format函数,用来代替%s,%r等格式化字符串: # -*- codin ...
- 中国大学MOOC实用Python程序设计学习笔记和课后测试1-3周(北京大学)
中国大学MOOC实用Python程序设计学习笔记和课后测试1-3周(北京大学) 第1周 Python初探 为project设置解释器 保留字 第1周课后测试题 第2周 基本运算.条件分支和输出格式控制 ...
最新文章
- 读博五年,我总结出了7条帮你「少走弯路」的真理
- pycharm怎么切换到vim编辑模式
- 【Android 组件化】路由组件 ( 生成 Root 类记录模块中的路由表 )
- php读取远程二进制文件,php 读取二进制文件
- Linux按键输入实验(体验一下输入驱动,实际开发使用input子系统处理)
- 多线程的全局变量与局部变量
- Oracle基础 游标
- 小程序开发及环境搭建及发布
- OSEK 操作系统的基本概念
- [2022-06-21 完美解决]MacBookPro 2020 M1 开启2k HIDPI
- 计算机网络与基础第五章答案,第五章 计算机网络基础
- 利用threading多线程爬取王者荣耀的高清壁纸
- get_price函数定义python_python get()函数
- 关于程序员失眠的解决方案
- Python实现自省的方法有哪些?
- 前端 115道 面试题总结【持续更新...】
- 70 告别了,2013-2021【2021-06-05 1854】
- C++ libco 介绍与应用
- idea下git 错误 error: unable to read askpass response from 'C:\Users\ASUS\.IntelliJIdea2019.1\system\tm
- Oracle数据库CPU占用过高