《資訊學奧賽一本通》 過河卒

2022-02-06 06:58:14 字數 1623 閱讀 1776

時間限制: 1000 ms         記憶體限制: 65536 kb

提交數: 4212     通過數: 1741 

棋盤上a點有乙個過河卒,需要走到目標b點。卒行走的規則:可以向下、或者向右。同時在棋盤上的某一點有乙個對方的馬(如c點),該馬所在的點和所有跳躍一步可達的點稱為對方馬的控制點,如圖3-1中的c點和p1,……,p8,卒不能通過對方馬的控制點。棋盤用座標表示,a點(0,0)、b點(n, m) (n,m為不超過20的整數),同樣馬的位置座標是需要給出的,c≠a且c≠b。現在要求你計算出卒從a點能夠到達b點的路徑的條數。

給出n、m和c點的座標。

從a點能夠到達b點的路徑的條數。

8 6 0 4

1617

公式好推.

陣列出界問題,

(1) 我是在外面多加了一圈。

不過看了下 lg 的題解,

原來可以用 三目運算子 來保證不出界

(2) a[i == 0 ? i : i-1][j]

馬的控制點判斷

(1) 可以用陣列 當地圖,把有馬控制的地方變為1 來判斷,(用空間換時間)。

(2) (i==mx+1||i==mx-1)&&(k==my+2||k==my-2) (i,j) 為 終點, (mx,my) 馬所處的位置。

自己寫的:

#includeusing

namespace

std;

intn,m,cx,cy;

long

long step[25][25] = ;

int h[9][2

];

int insx = ,

insy = ;

bool flag = false

;

intmain()

//step

step[1][1]=1

;

for(int i=1; i<= n+1; ++i)

}if(!flag)

flag = false

; }}

}cout

<< step[n+1][m+1] <

}

解法二

#include using

namespace

std;

int dir[8][2] = , , , , , , , };

bool d[30][30

];long

long dp[30][30

];int

main()

}dp[

0][0] = 1

;

for(int i=0;i<=n;i++)

if(j)}}

}cout

<< dp[n][m] <

return0;

}

資訊奧賽一本通 過河卒 1314題

滿分 直接copy,不用付版權費,你懂得 嘿嘿 當然,作為一名三好學生,這樣做是有損風氣的。所以,請認真思考。時間限制 1000 ms 記憶體限制 65536 kb 提交數 12194 通過數 5109 棋盤上a點有乙個過河卒,需要走到目標b點。卒行走的規則 可以向下 或者向右。同時在棋盤上的某一點...

資訊學奧賽一本通 紅與黑

演算法標籤 dfs,flood fill 題目描述 有一間長方形的房子,地上鋪了紅色 黑色兩種顏色的正方形瓷磚。你站在其中一塊黑色的瓷磚上,只能向相鄰 上下左右四個方向 的黑色瓷磚移動。請寫乙個程式,計算你總共能夠到達多少塊黑色的瓷磚。輸入格式 輸入包括多個資料集合。每個資料集合的第一行是兩個整數 ...

資訊學奧賽一本通 小球(drop)

許多的小球乙個乙個的從一棵滿二叉樹上掉下來組成fbt full binary tree,滿二叉樹 每一時間,乙個正在下降的球第乙個訪問的是非葉子節點。然後繼續下降時,或者走右子樹,或者走左子樹,直到訪問到葉子節點。決定球運動方向的是每個節點的布林值。最初,所有的節點都是false,當訪問到乙個節點時...