题目描述:
Calvin the robot lies in an infinite rectangular grid. Calvin’s source code contains a list of n commands, each either ‘U’, ‘R’, ‘D’, or ‘L’ — instructions to move a single square up, right, down, or left, respectively. How many ways can Calvin execute a non-empty contiguous substrings of commands and return to the same square he starts in? Two substrings are considered different if they have different starting or ending indices.
输入描述:
The first line of the input contains a single positive integer, n (1 ≤ n ≤ 200) — the number of commands.
The next line contains n characters, each either ‘U’, ‘R’, ‘D’, or ‘L’ — Calvin’s source code.
输出描述:
Print a single integer — the number of contiguous substrings that Calvin can execute and return to his starting square.
输入:
6
URLLDR
4
DLUU
7
RLRLRLR
输出:
2
0
12
题意:
给出一个操作串,UDLR分别表示机器人向上下左右走一步,问这个串有多少非空子串使得操作完这个子串后机器人回到原地
题解:
直接暴力
代码:
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
const int maxn = 200 + 5;
char s[maxn];
int main(){
int n;
while(scanf("%d",&n)!=EOF){
scanf("%s",s);
int ans = 0;
for(int i = 0; i < n; i ++){
for(int j = i + 1; j < n; j ++){
int ud = 0;
int lr = 0;
for(int k = i; k <= j; k ++){
if(s[k] == 'U') ud ++;
else if(s[k] == 'D') ud --;
else if(s[k] == 'L') lr ++;
else lr --;
}
if(!ud && !lr) ans++;
}
}
printf("%d\n",ans);
}
return 0;
}
该博客讨论了Codeforces的一道编程问题,涉及一个机器人在无限网格中根据'U'(上)、'R'(右)、'D'(下)、'L'(左)指令移动。问题求解机器人执行连续子序列后能返回起点的次数。输入包括命令数量和指令字符串,输出为满足条件的子序列数。提供了题意解析和暴力解法的代码实现。

被折叠的 条评论
为什么被折叠?



