題目
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...