藍橋杯 PREV 33 蘭頓螞蟻 模擬

2021-08-17 16:45:42 字數 1276 閱讀 1891

題目鏈結

給定乙個m*n的矩形,每個格仔上有0,1,兩種形態,0代表白,1代表黑。

螞蟻要移動k次,移動規則:

若螞蟻在黑格,右轉90度,將該格改為白格,並向前移一格;

若螞蟻在白格,左轉90度,將該格改為黑格,並向前移一格。

現在給你乙個蘭頓螞蟻的位置,和他頭的方向,要走的步數,問最後這個螞蟻會在什麼位置停下。

除去題目中的移動規則,這道題就是非常簡單的模擬題,走k步就可以了,但是因為題目中「簡單」的移動規則,導致模擬的情況就非常多。

首先是: 上下左右分別用:udlr表示。

udlr 在 0、1上又有不同的轉向。

為了方便,我們用借助map來實現他的轉彎,具體移動情況可以參考**部分。

最後要特別注意的一點,每走一步上乙個格仔需要變顏色

#include 

#include

#include

#include

#include

#include

using

namespace

std;

typedef pair tur; // 拐彎

mapchar> cha;//變向

map fx; // 具體走向

int dir[4][2] = ;

const

int maxn = 1e2 + 10;

int mat[maxn][maxn];

int m, n;

int sx, sy, k;

char c;

void init()

void dfs(int x, int y, char c, int k)//模擬螞蟻的移動

tur tmp;

tmp.first = c;

tmp.second = mat[x][y];

if(mat[x][y] == 1)

mat[x][y] = 0;

else

mat[x][y] = 1;

dfs(dir[fx[cha[tmp]]][0] + x, dir[fx[cha[tmp]]][1] + y, cha[tmp], k - 1);

}int main()

}cin >> sx >> sy >> c >> k;

dfs(sx, sy, c, k);

return

0;}

藍橋杯 蘭頓螞蟻(模擬)

歷屆試題 蘭頓螞蟻 時間限制 1.0s 記憶體限制 256.0mb 問題描述 蘭頓螞蟻,是於1986年,由克里斯 蘭頓提出來的,屬於細胞自動機的一種。平面上的正方形格仔被填上黑色或白色。在其中一格正方形內有乙隻 螞蟻 螞蟻的頭部朝向為 上下左右其中一方。螞蟻的移動規則十分簡單 若螞蟻在黑格,右轉90...

藍橋杯 蘭頓螞蟻(dfs 模擬)

蘭頓螞蟻 問題描述 蘭頓螞蟻,是於1986年,由克里斯 蘭頓提出來的,屬於細胞自動機的一種。平面上的正方形格仔被填上黑色或白色。在其中一格正方形內有乙隻 螞蟻 螞蟻的頭部朝向為 上下左右其中一方。螞蟻的移動規則十分簡單 若螞蟻在黑格,右轉90度,將該格改為白格,並向前移一格 若螞蟻在白格,左轉90度...

藍橋杯 蘭頓螞蟻

問題描述 蘭頓螞蟻,是於1986年,由克里斯 蘭頓提出來的,屬於細胞自動機的一種。平面上的正方形格仔被填上黑色或白色。在其中一格正方形內有乙隻 螞蟻 螞蟻的頭部朝向為 上下左右其中一方。螞蟻的移動規則十分簡單 若螞蟻在黑格,右轉90度,將該格改為白格,並向前移一格 若螞蟻在白格,左轉90度,將該格改...