貓和老鼠 藍橋杯 手速 暴力練習賽(暴力搜尋)

2021-09-21 10:30:14 字數 2075 閱讀 2008

貓和老鼠 藍橋杯/手速/暴力練習賽

【題目描述】

貓和老鼠在10*10 的方格中運動,例如:

*...*.....

......*...

...*...*..

..........

...*.c....

*.....*...

...*......

..m......*

...*.*....

.*.*......

c=貓(cat)

m=老鼠(mouse)

*=障礙物

.=空地

貓和老鼠每秒中走一格,如果在某一秒末他們在同一格中,我們稱他們「相遇」。

障礙物上去或者出界,就用1 秒的時間做乙個右轉90 度。一開始他們都面向北方。

程式設計計算多少秒以後他們相遇。

【輸入格式】

10 行,格式如上

【輸出格式】

相遇時間t。如果無解,輸出-1。

【樣例輸入】

*...*.....

......*...

...*...*..

..........

...*.c....

*.....*...

...*......

..m......*

...*.*....

.*.*......

1/*2

思路:如果貓和老鼠不相遇,那麼一定是貓在某乙個格仔沿著某乙個方向重複走了2次以上並且

3老鼠也是這樣。 4*/

5 #include6 #include7 #include8 #include9

using

namespace

std;

1011

char mp[15][15

];12

13const

int left_dir = 1;14

const

int right_dir = 2;15

const

int up = 3;16

const

int down = 4;17

const

int mouse = 1;18

const

int cat = 0;19

20struct

node

2627

bool flag[15][15][5];//

記錄當前格仔在某乙個方向上是否走過

2829

void init(int x, int

y)35

};36

37 node nd[2

];38

int cnt = 0;39

40bool move(int

i)61

if(mp[x][y] != '*'

) else

6768

if(!nd[i].flag[x][y][nd[i].dir]) else

return

false;72

}7374void

test()

85if(flag) printf("

%d\n

", cnt);

86else printf("

-1\n");

87}8889

intmain()

99else

if(mp[i][j] == 'm'

)103

}104

getchar();

105}

106test();

107return0;

108}

109/*

110*...*.....

111......*...

112...*...*..

113..........

114...*.c....

115*.....*...

116...*......

117..m......*

118...*.*....

119.*.*......

120*/

貓和老鼠 藍橋杯 手速 暴力練習賽(暴力搜尋)

貓和老鼠 藍橋杯 手速 暴力練習賽 題目描述 貓和老鼠在10 10 的方格中運動,例如 c.m.c 貓 cat m 老鼠 mouse 障礙物 空地 貓和老鼠每秒中走一格,如果在某一秒末他們在同一格中,我們稱他們 相遇 障礙物上去或者出界,就用1 秒的時間做乙個右轉90 度。一開始他們都面向北方。程式...

藍橋杯 乘法算式 暴力

觀察下面的算式 它表示 兩個兩位數字相乘,結果是3位數。其中的星號 代表任意的數字,可以相同,也可以不同,只要不是在首位的就可以是0。當然,滿足這個要求的算式很多,但我們還有如下的要求 所有星號所代表的數字全都是奇數。滿足這個要求的算式就不多了。比如 13 x 15 195 題目的任務是 編寫程式,...

藍橋杯 獎券數目 暴力

題目 獎券數目 有些人很迷信數字,比如帶 4 的數字,認為和 死 諧音,就覺得不吉利。雖然這些說法純屬無稽之談,但有時還要迎合大眾的需求。某 活動的獎券號碼是5位數 10000 99999 要求其中不要出現帶 4 的號碼,主辦單位請你計算一下,如果任何兩張獎券不重號,最多可發出獎券多少張。請提交該數...