機械人走迷宮

2021-09-24 04:51:37 字數 1845 閱讀 3678

有乙個愚蠢的機械人走進乙個w*h的迷宮,迷宮裡有空地和陷阱。他想要訪問迷宮的每個方格,但是它很笨,只會按照指令的方向走。當機械人不能走的時候,也就是下一步會遇到陷阱、迷宮邊界或者訪問過的格仔,它會向右轉90度(順時針旋轉90度,不能訪問已經訪問過的方格,且在原地只轉一次,移動後可獲得又一次旋轉機會)。請問這個機械人最多可以經過多少個方格。 

輸入

對於每組資料,第一行兩個數w和h,表示迷宮的行和列(1<=w,h<=10) 

接下來w行每行有h個字元用於描述這個迷宮。迷宮的『.』表示空地,即為可以走的地方。『*』表示陷阱,即為不能走的地方。迷宮中有乙個英文本母,表示機械人的出發點,字母只有』u』,』d』,』l』,』r』四種。分別表示機械人的初始指令是向上,向下,向左,向右。 

輸出

對於每組資料,輸出乙個整數,即機械人一共經過多少個方格。

樣例輸入

2 3

u...*.

4 4r...

.**.

.**.

....

樣例輸出

4

12

我的思路:

vis記錄是否訪問過,flag代表轉了幾次

#include #include #include "iostream"

using namespace std;

int main()

for (int i=0;iscanf("%s",a[i]);

int sx,sy;

char z,t;

for (int i=0;i}

}int flag=0,ge=1,d;

if(t=='u')**:

import hashlib

import datetime

for n in range(3,11):

starttime = datetime.datetime.now()

pre=""

i=0res=''

while(pre!='0'*n):

i+=1

res=str(hashlib.sha256(("zhengzhaozuo"+str(i)).encode('utf-8')).hexdigest())

pre=res[0:n]

print("i: ",str(i)," str:",res)

endtime = datetime.datetime.now()

d=0;

if(t=='l')

d=3;

if(t=='r')

d=1;

if(t=='d')

d=2;

vis[sx][sy]=1;

while(flag!=2)

ge++;

flag=0;

sx--;

vis[sx][sy]=1;

}else if(d==1)

ge++;

flag=0;

sy++;

vis[sx][sy]=1;

}else if(d==2)

ge++;

flag=0;

sx++;

vis[sx][sy]=1;

}else if(d==3)

ge++;

flag=0;

sy--;

vis[sx][sy]=1;}}

cout<}

return 0;

}

人形機械人視覺處理 走迷宮

上期我們熟悉了軟體中函式的用法,並實現通過顏色識別來躲避障礙物,這期我們增加乙個顏色,在乙個迷宮的環境中,讓機械人通過不同顏色的識別來走出迷宮。預期效果 機械人可以從左邊 中間 右邊三個方向前進,保證目標物在視覺畫面裡處於居中位置。使用藍 左 紅 中 黃 右 三個顏色為機械人的視覺識別進行定位。1 ...

機械人走方格

一 有乙個xxy的網格,乙個機械人只能走格點且只能向右或向下走,要從左上角走到右下角。請設計乙個演算法,計算機械人有多少種走法。給定兩個正整數int x,int y,請返回機械人的走法數目。保證x y小於等於12。思路 共需走x y步,其中有x步向又走,y步向左走,即從x y步中選出x步的種類數,即...

機械人走格仔

時間限制 1 sec 記憶體限制 128 mb 提交 265 解決 63 提交 狀態 討論版 乙個長x寬y的棋盤,有xy個格仔。將機械人放在某個格仔中,機械人可以沿上 下 左 右四個方向走一步到相鄰的格仔中,但不會越過棋盤邊界。問機械人要經過所有的格仔至少一次並最終回到起點最少需要多少步?規則允許機...