標(biāo)題:迷宮
X星球的一處迷宮游樂場建在某個小山坡上壤躲。
它是由10x10相互連通的小房間組成的美莫。
房間的地板上寫著一個很大的字母。
我們假設(shè)玩家是面朝上坡的方向站立财破,則:
L表示走到左邊的房間宗挥,
R表示走到右邊的房間乌庶,
U表示走到上坡方向的房間沼溜,
D表示走到下坡方向的房間丹喻。
X星球的居民有點(diǎn)懶,不愿意費(fèi)力思考抖锥。
他們更喜歡玩運(yùn)氣類的游戲宵喂。這個游戲也是如此糠赦!
開始的時候,直升機(jī)把100名玩家放入一個個小房間內(nèi)锅棕。
玩家一定要按照地上的字母移動拙泽。
迷宮地圖如下:
UDDLUULRUL
UURLLLRRRU
RRUURLDLRD
RUDDDDUUUU
URUDLLRRUU
DURLRLDLRL
ULLURLLRDU
RDLULLRDDD
UUDDUDUDLL
ULRDLUURRR
樣例輸入
ULDL
RRUL
LRDL
ULLR
樣例輸出 10
請你計算一下,最后裸燎,有多少玩家會走出迷宮?
而不是在里邊兜圈子顾瞻。
請?zhí)峤辉撜麛?shù),表示走出迷宮的玩家數(shù)目德绿,不要填寫任何多余的內(nèi)容荷荤。
如果你還沒明白游戲規(guī)則,可以參看一個簡化的4x4迷宮的解說圖:
特色建圖 上下顛倒了 左右不變 把我坑了 記得要跟著題意走 不要嫌麻煩 把測試數(shù)據(jù)跑一下
31
include <stdio.h>
include <iostream>
include <cstring>
include <vector>
include <queue>
include <map>
include <set>
include <sstream>
include <algorithm>
const int si = 15, MAXM = 0;
char mp[si][si];
int vis[si][si];
using namespace std;
int N;
int ans = 0;
int flag = 0;
void show() {
cout <<endl;
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
printf("%d", vis[i][j]);
}
cout <<endl;
}
}
void dfs(int x, int y) {
if (x < 0 || y < 0 || x >= N || y >= N) {
ans++;
show();
return;
}
if (vis[x][y]) return;
vis[x][y] = 1;
if (mp[x][y] == 'L') y -= 1;
else if (mp[x][y] == 'R') y += 1;
else if (mp[x][y] == 'D') x += 1;
else if (mp[x][y] == 'U') x -= 1;
dfs(x, y);
}
int main() {
N = 10;
for (int j = 0; j < N; j++)
scanf("%s", mp[j]);//x
cout << endl;
//for (int i = 0; i < N; i++)
//printf("%s\n", mp[i]);
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {//每次搜索一個
fill(vis[0], vis[0] + si * si, 0);
dfs(i, j);
}
}
cout << ans << endl;
return 0;
}