[17无验证]矩形游戏-字节跳动2018秋
1.题目描述
小a在玩一个很简单的游戏,游戏的内容是控制一个小人在一块矩形的空地内走,一旦小人走出矩阵范围,游戏就失败。游戏机有上,下,左,右四个按键,每按一下小人就向相应的方向走一步。这个游戏过于简单,小a说:“这种游戏我闭着眼睛玩都输不了”。于是他便闭上眼睛,进行一连串的操作。但若他中途输了的话就会停止。
那么问题来了:给定小a的操作,进行Q次询问,你能算出每次询问小人能走多少步吗?
- 输入描述:
第一行为长度L
的字符串S
,每个字符依次代表小a的一次操作。'u'
代表向上,'d'
代表向下,'l'
代表向左,'r'
代表向右。字符串S
不会包含其他字符。
第二行是整数Q
,代表Q
次询问
接下来Q
行,每行有四个整数N
,M
,X
,Y
,保证1<=X<=N
,1<=Y<=M
,矩阵大小为N*M
,小人初始位置为(X,Y)
。
对于30%的测试,0
, 0
, 0
, 0
对于100%的测试,0
, 0
, 0
, 0
- 输出描述:
每次询问要求你打印一个整数s
(单独一行),代表小人所走的步数。 - 备注:
小人踏出矩阵外的那一步也要算入结果哦 - 输入示例:
uuurrdddddl 3 5 6 3 3 5 6 4 2 6 6 4 2
- 输出示例:
3 10 11
- 说明:
上下左右关系以下图为例,一个N=3,M=2的矩阵是这样的:
(1,1)(1,2)
(2,1)(2,2)
(3,1)(3,2)
简单遍历判断是否出了矩阵即可。
文章图片
3.参考答案
#include
using namespace std;
int main() {
string s;
cin >> s;
int q = 0;
scanf("%d",&q);
int nums[q][4];
for(int i=0;
i
【[17无验证]矩形游戏-字节跳动2018秋】其他写法
#include
#include
using namespace std;
int check(string const& str,int nums[4]){
int cur_n = nums[2];
int cur_m = nums[3];
int step = 0;
for(int i=0;
i!=str.size();
++i){
++step;
switch(str[i]){
case 'u':
--cur_n;
if(cur_n<1) return step;
break;
case 'd':
++cur_n;
if(cur_n>nums[0]) return step;
break;
case 'r':
++cur_m;
if(cur_m>nums[1]) return step;
break;
case 'l':
--cur_m;
if(cur_m<1) return step;
break;
}
}
return step;
}int main(){
string str;
// 操作
cin >> str;
int n;
scanf("%d",&n);
int res[n];
for(int i=0;
i!=n;
++i){
int nums[4];
for(int j=0;
j!=4;
++j){
scanf("%d",&nums[j]);
}
// 记录检测结果
res[i] = check(str,nums);
}
// 打印结果
for(int i=0;
i!=n;
++i){
printf("%d\n",res[i]);
}
}
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 学无止境,人生还很长
- jhipster|jhipster 升级无效问题
- 说的真好
- 解决SpringBoot引用别的模块无法注入的问题
- 抱着梦的无眠
- 松软可口易消化,无需烤箱超简单,新手麻麻也能轻松成功~
- 公园游
- 2018-07-27读书心得
- 今天“大暑”!“赤日几时过,清风无处寻!”
- 无故.