馬攔過河卒
描述 description
棋盤上a點有乙個過河卒,需要走到目標b點。卒行走的規則:可以向下、或者向右。同時在棋盤上c點有乙個對方的馬,該馬所在的點和所有跳躍一步可達的點稱為對方馬的控制點。因此稱之為「馬攔過河卒」。
棋盤用座標表示,a點(0, 0)、b點(n, m)(n, m為不超過20的整數),同樣馬的位置座標是需要給出的。現在要求你計算出卒從a點能夠到達b點的路徑的條數,假設馬的位置是固定不動的,並不是卒走一步馬走一步。
輸入格式 input format
一行四個資料,分別表示b點座標和馬的座標。
輸出格式 output format
乙個資料,表示所有的路徑條數。
樣例輸入 sample input
6 6 3 3
樣例輸出 sample output
** source
noip2002普及組第4題
用f[i,j]來表示從(0,0)到(i,j)這個點的路徑數量。由於卒只能向下或向右走,因此他上一步只有可能在(i-1,j)或者(i,j-1)處,所以到這點的路徑數量便是到這兩點的路徑數量之和。
同時如果卒在第一行或者第一列時,只有乙個方向。
用map(i,j)來表示這個點是否能走,然後初始化,去掉所有馬佔的點(馬所在的地方也要去掉)。還要把原點去掉,因為原點到原點的路徑是唯一而且沒有點能到原點了。
#include
using
namespace
std;
bool
map[21][21]=;
long
long f[21][21]=;
int xx[3]=;
int yy[3]=;
int max(int a,int b);
void change(int a,int b);
int main()
change(x2,y2);
int i=0,j=0;
f[0][0]=1;
for (i=1;i<=x1;i++)
for (j=1;j<=y1;++j)
}for (i=1;i<=x1;i++)
for (j=1;j<=y1;j++)
cout
void change(int a,int b)
馬攔過河卒
問題描述 棋盤上a 點有乙個過河卒,需要走到目標 b點。卒行走的規則 可以向下 或者向右。同時在棋盤上 c點有乙個對方的馬,該馬所在的點和所有跳躍一步可達的點稱為對方馬的控制點。因此稱之為 馬攔過河卒 棋盤用座標表示,a 點 0,0 b 點 n,m n,m為不超過 15的整數 同樣馬的位置座標是需要...
馬攔過河卒
如圖,a點有乙個過河卒,需要走到目標 b點。卒行走規則 可以向下 或者向右。同時在棋盤上的任一點有乙個對方的馬 如上圖的c點 該馬所在的點和所有跳躍一步可達的點稱為對方馬的控制點。例如上圖 c點上的馬可以控制 9個點 圖中的p1,p2 p8和 c 卒不能通過對方馬的控制點。棋盤用座標表示,a點 0,...
馬攔過河卒
problem description 棋盤上a點有乙個過河卒,需要走到目標b點。卒行走的規則 可以向下 或者向右。同時在棋盤上c點有乙個對方的馬,該馬所在的點和所有跳躍一步可達的點稱為對方馬的控制點。因此稱之為 馬攔過河卒 棋盤用座標表示,a點 0,0 b點 n,m n,m為不超過15的整數 同樣...