2023年藍橋杯省賽A組第一題 迷宮

2021-09-13 09:07:14 字數 1506 閱讀 1646

題目

x星球的一處迷宮遊樂場建在某個小山坡上。

它是由10x10相互連通的小房間組成的。

房間的地板上寫著乙個很大的字母。

我們假設玩家是面朝上坡的方向站立,則:

l表示走到左邊的房間,

r表示走到右邊的房間,

u表示走到上坡方向的房間,

d表示走到下坡方向的房間。

x星球的居民有點懶,不願意費力思考。

他們更喜歡玩運氣類的遊戲。這個遊戲也是如此!

開始的時候,***把100名玩家放入乙個個小房間內。

玩家一定要按照地上的字母移動。

迷宮地圖如下:

------------

uddluulrul

uurlllrrru

rruurldlrd

rudddduuuu

urudllrruu

durlrldlrl

ullurllrdu

rdlullrddd

uuddududll

ulrdluurrr

------------

請你計算一下,最後,有多少玩家會走出迷宮? 

而不是在裡邊兜圈子。

請提交該整數,表示走出迷宮的玩家數目,不要填寫任何多餘的內容。

答案31

思路1直接用手模擬4分鐘完事

思路2用dfs,只要判斷是否走的路是原來走過的路和判斷是否越界,就可以判斷是否走出來

**

#includeusing namespace std;

int s[205][205]; // 標記地圖如果能走為1,不能走為0

int use[205][205];// 標記是否已經走過

int key;

void dfs(char s1[105][105],int hi ,int x, int y)

if((use[x][y]!=1&&x==0)||(use[x][y]!=1&&x==hi+1)||(use[x][y]!=1&&y==0)||(use[x][y]!=1&&y==hi+1)||s[x][y]==1)

if(s1[x][y]=='u')

else if(s1[x][y]=='d')

else if(s1[x][y]=='l')

else if(s1[x][y]=='r')

}void dfs_key(char s1[105][105],int hi,int x,int y)

dfs(s1,hi,i,j);

}}int main()

dfs_key(map1,10,1,1);

int sum=0;

for(int i=1;i<=10;i++)

for(int j=1;j<=10;j++)

if(s[i][j]==1)

sum++;

cout

}

2023年藍橋杯A組第一題

x星球的一處迷宮遊樂場建在某個小山坡上。它是由10x10相互連通的小房間組成的。房間的地板上寫著乙個很大的字母。我們假設玩家是面朝上坡的方向站立,則 l表示走到左邊的房間,r表示走到右邊的房間,u表示走到上坡方向的房間,d表示走到下坡方向的房間。x星球的居民有點懶,不願意費力思考。他們更喜歡玩運氣類...

2023年藍橋杯省賽A組第四題 方格分割

題目 6x6的方格,沿著格仔的邊線剪開成兩部分。要求這兩部分的形狀完全相同。如圖 p1.png,p2.png,p3.png 就是可行的分割法。試計算 包括這3種分法在內,一共有多少種不同的分割方法。注意 旋轉對稱的屬於同一種分割法。請提交該整數,不要填寫任何多餘的內容或說明文字。答案509 思路這題...

2023年藍橋杯省賽A組第七題 正則問題

題目 考慮一種簡單的正規表示式 只由 x 組成的正規表示式。小明想求出這個正規表示式能接受的最長字串的長度。例如 xx x x xx xx 能接受的最長字串是 長度是6。輸入 乙個由x 組成的正規表示式。輸入長度不超過100,保證合法。輸出 這個正規表示式能接受的最長字串的長度。例如,輸入 xx x...