SDNU 1025 馬踏飛燕

2021-08-11 16:21:32 字數 1043 閱讀 3547

無聊的陶陶準備編寫一款遊戲,名字就叫做「馬踏飛燕」,在這款遊戲中有個乙個100*100的座標,把馬放在任意乙個座標點,再把燕子放在任意乙個座標點,並且燕子不會移動,馬只能按照象棋規則走「日」。若4步之內能「踏」到燕子,則成功。笨蛋的陶陶不知道該怎麼去寫,現在請你幫助他。

input

第一行兩個整數,馬的起始座標x,y (0sdnu acm-icpc 2011複賽(2010級)

感覺用dfs和bfs都行

用dfs吧,這個僅限制四步所以做乙個if判斷就好,就把他看成尋常的地圖,只不過步數有限制

我錯的乙個地方是隨便return 了,注意這個bfs並沒有遞迴,你隨便乙個條件不符合就return的話是提前結束這個函式,所以是不行滴

其它的還是很好實現

#include#include#includeusing namespace std;

const int max = 2000 + 5;//高階~~

//const int max = 100 + 5; 初級馬踏飛燕

int mp[max][max];

int step[max][max];

int foot[8][2]=;

int a,b,c,d;

int flag = 0;

struct node;

queueq;

void bfs()

nexta.x = nx;

nexta.y = ny;

step[nx][ny] = step[en.x][en.y] + 1;

q.push(nexta);

}}

} }

}int main()

{ cin>>a>>b>>c>>d;

memset(mp,0,sizeof(mp));

memset(step,0,sizeof(step));

node be;

be.x = a;

be.y = b;

q.push(be);

bfs();

if(flag)

{ cout<<"y"<

模擬102 題解

顯然是單調棧處理。然而優弧 劣弧兩種情況,加上高度存在相同,就比較難處理。然而環是可以平移的,所以乙個好的方法是將其中的最大值移到乙個端點,於是跨環端點的情況只出現在 右半部分形成乙個單調不降的序列。順便去重就可以了。打表發現 dp i 2 dp dp 2 dp n 為最終的答案。將式子拆一下,似乎...

sdnu 1206 螞蟻感冒

description 長100厘公尺的細長直桿子上有n只螞蟻。它們的頭有的朝左,有的朝右。每只螞蟻都只能沿著桿子向前爬,速度是1厘公尺 秒。當兩隻螞蟻碰面時,它們會同時掉頭往相反的方向爬行。這些螞蟻中,有1只螞蟻感冒了。並且在和其它螞蟻碰面時,會把感冒傳染給碰到的螞蟻。請你計算,當所有螞蟻都爬離桿...

SDNU1332 矩陣交換

1 只交換行或列的標號。include include include include using namespace std int x 110 110 int y 110 110 int x bian 110 int y bian 110 int matrix 110 110 struct no...