題目:
10多年的房山網站建設經驗,針對設計、前端、開發(fā)、售后、文案、推廣等六對一服務,響應快,48小時及時工作處理。全網營銷推廣的優(yōu)勢是能夠根據用戶設備顯示端的尺寸不同,自動調整房山建站的顯示方式,使網站能夠適用不同顯示終端,在瀏覽器中調整網站的寬度,無論在任何一種瀏覽器上瀏覽網站,都能展現優(yōu)雅布局與設計,從而大程度地提升瀏覽體驗。創(chuàng)新互聯從事“房山網站設計”,“房山網站推廣”以來,每個客戶項目都認真落實執(zhí)行。
棋盤上 \(A\) 點有一個過河卒,需要走到目標 \(B\) 點。卒行走的規(guī)則:可以向下、或者向右。同時在棋盤上 \(C\) 點有一個對方的馬,該馬所在的點和所有跳躍一步可達的點稱為對方馬的控制點。因此稱之為“馬攔過河卒”。
棋盤用坐標表示,\(A\) 點 \((0, 0)\)、\(B\) 點 \((n, m)\),同樣馬的位置坐標是需要給出的。
現在要求你計算出卒從 \(A\) 點能夠到達 \(B\) 點的路徑的條數,假設馬的位置是固定不動的,并不是卒走一步馬走一步。
一行四個正整數,分別表示 \(B\) 點坐標和馬的坐標。
一個整數,表示所有的路徑條數。
6 6 3 3
6
對于 \(100 \%\) 的數據,\(1 \le n, m \le 20\),\(0 \le\) 馬的坐標 \(\le 20\)。
【題目來源】
NOIP 2002 普及組第四題
這是一道dp算法題目
狀態(tài)轉移公式是:
\(dp[i][j]=dp[i?1][j]+dp[i][j?1]\)
代碼:
#include
#define N 25
using namespace std;
bool mp[N][N];
long long dp[N][N];
int main(){
dp[1][1]=1;
int x,y,z,q;
cin>>z>>q>>x>>y;
z++;
q++;
x++;
y++;
mp[x][y]=1;
mp[x-2][y-1]=1;
mp[x-2][y+1]=1;
mp[x+2][y-1]=1;
mp[x+2][y+1]=1;
mp[x-1][y+2]=1;
mp[x-1][y-2]=1;
mp[x+1][y+2]=1;
mp[x+1][y-2]=1;
for(int i=1;i<=z;i++){
for(int j=1;j<=q;j++){
if((i!=1||j!=1)&&!mp[i][j]){
dp[i][j]=dp[i-1][j]+dp[i][j-1];
}
}
}
cout<