1. 程式人生 > >DP 過河卒

DP 過河卒

數據 一個數 lld 所有 clu pri lose 控制 spa

棋盤上A點有一個過河卒,需要走到目標B點。卒行走的規則:可以向下、或者向右。同時在棋盤上C點有一個對方的馬,該馬所在的點和所有跳躍一步可達的點稱為對方馬的控制點。因此稱之為“馬攔過河卒”。

棋盤用坐標表示,A點(0, 0)、B點(n, m)(n, m為不超過20的整數),同樣馬的位置坐標是需要給出的。

現在要求你計算出卒從A點能夠到達B點的路徑的條數,假設馬的位置是固定不動的,並不是卒走一步馬走一步。

輸入輸出格式

輸入格式:

一行四個數據,分別表示B點坐標和馬的坐標。

輸出格式:

一個數據,表示所有的路徑條數。

輸入輸出樣例

輸入樣例#1:
6 6 3 3
輸出樣例#1:
6
代碼如下:
技術分享
#include <stdio.h>
long long a[1001][1001];
int main()
{
     int x1,y1,x2,y2;
     scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
     x1+=2;y1+=2;x2+=2;y2+=2;   
     for(int i=2;i<=x1;i++)     
          for(int j=2;j<=y1;j++)
           {
            a[2][2]=1;
            a[x2][y2]
=0; a[x2+2][y2+1]=0; a[x2+1][y2+2]=0; a[x2-1][y2+2]=0; a[x2-2][y2+1]=0; a[x2-2][y2-1]=0; a[x2-1][y2-2]=0; a[x2+1][y2-2]=0; a[x2+2][y2-1]=0; a[i][j]=a[i-1][j]+a[i][j-1]; } printf(
"%lld",a[x1][y1]); return 0; }
View Code

DP 過河卒