無聊的陶陶準備編寫一款遊戲,名字就叫做「馬踏飛燕」,在這款遊戲中有個乙個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...