NENU 怪盜基德的遊戲

2021-09-01 17:39:36 字數 1020 閱讀 9074

description

kid和新一開始玩乙個有趣的遊戲。遊戲規則是這樣的:在乙個n*m棋盤中,某個位置有一顆棋子,並且有些位置是不能走的。現在兩個人輪流操作,每次可以將棋子向上下左右的格仔裡走一格,不能走出邊界。若一方不能行動,或者走到了已經走過的格仔,則算失敗。

現在給出棋盤的初始狀態,柯南先行。請判斷當雙方均用最優策略時,柯南是否可以獲勝。

input

資料有多組。

第一行為兩個數n, m (2 <= n, m <= 5)。代表棋盤有n行m列。

接下來有n行,每行m個字元,代表棋盤的初始狀態。其中』.』代表可行區域,』x』代表不能走的區域,』s』代表棋子的初始位置。

output

對每組資料,若柯南可以獲勝,則輸出」yes」;否則輸出」no」。

sample input

3 3sx..x.

...sample output

no#include #include #include #define maxn 6

using namespace std;

char map[maxn][maxn];

int m,n;

int mark[maxn][maxn];

int const dir[4][2] = ;

inline bool check(int x, int y)

int dfs(int x,int y)

mark[x][y]=0;

return flag;

}int main()

{ while(~scanf("%d %d",&n,&m))

{ if(n==0) break;

for(int i=0;i

大致思路:從柯南開始,每次對周圍進行搜尋,每次將flag進行取反操作,表示柯南與基德的不同回合。如果dfs到了一條flag true的路徑,則輸出yes。

怪盜基德的滑翔翼

描述 怪盜基德是乙個充滿傳奇色彩的怪盜,專門以珠寶為目標的超級盜竊犯。而他最為突出的地方,就是他每次都能逃脫中村警部的重重圍堵,而這也很大程度上是多虧了他隨身攜帶的便於操作的滑翔翼。有一天,怪盜基德像往常一樣偷走了一顆珍貴的鑽石,不料卻被柯南小朋友識破了偽裝,而他的滑翔翼的動力裝置也被柯南踢出的足球...

怪盜基德的滑翔翼

怪盜基德是乙個充滿傳奇色彩的怪盜,專門以珠寶為目標的超級盜竊犯。而他最為突出的地方,就是他每次都能逃脫中村警部的重重圍堵,而這也很大程度上是多虧了他隨身攜帶的便於操作的滑翔翼。有一天,怪盜基德像往常一樣偷走了一顆珍貴的鑽石,不料卻被柯南小朋友識破了偽裝,而他的滑翔翼的動力裝置也被柯南踢出的足球破壞了...

怪盜基德的滑翔翼

確定滑行方向後就轉化為了lis問題,原問題相當於正向和反向以h i h i h i 為結尾的最長上公升子串行長度,分別正向和反向各進行一次lis,取得最大值即可。如下圖所示,int ans 0 最多可以經過的建築數量 正向做一遍lis for int i 1 i n i dp i 1 for int...