遞推-*馬攔過河卒
Problem Description
棋盤上A點有一個過河卒,需要走到目標B點。卒行走的規則:可以向下、或者向右。同時在棋盤上C點有一個對方的馬,該馬所在的點和所有跳躍一步可達的點稱為對方馬的控制點。因此稱之為“馬攔過河卒”。棋盤用座標表示,A點(0,0)、B點(n,m)(n,m為不超過15的整數),同樣馬的位置座標是需要給出的。現在要求你計算出卒從A點能夠到達B點的路徑的條數,假設馬的位置是固定不動的,並不是卒走一步馬走一步。
Input
一行四個資料,用空格分隔,分別表示B點的座標和馬的座標。
Output
一個資料,表示所有的路徑條數。
Sample Input
6 6 3 3
Sample Output
6
Hint
#include <stdio.h>
#include <stdlib.h>
int main()
{
int dx[9] = {0,-2,-1,1,2,2,1,-1,-2};
int dy[9] = {0,1,2,2,1,-1,-2,-2,-1};
int g[20][20]={0};
int i,j,x,y,n,m;
long long int f[20][20] = {0};
scanf("%d%d%d%d",&n,&m,&x,&y);
g[x][y] = 1;//馬所經過的地方
for(i = 1;i <= 8;i++)
{
if((x+dx[i] >= 0)&&(x + dx[i] <= n)&&(y+dy[i] >= 0)&&(y+dy[i]<= m))
{
g[x+dx[i]][y+dy[i]] = 1;
}
}
for(i = 1;i <= n;i++)
{
if(g[i][0] != 1)
f[i][0] = 1;//卒
else
for(;i <= n;i++)
f[i][0] == 0;
}
for(i = 1;i <= m;i++)
{
if(g[0][i] != 1)
f[0][i] = 1;
else
for(;i <= n;i++)
f[0][i] == 0;
}
for(i = 1;i <= n;i++)
{
for(j = 1;j <= m;j++)
{
if(g[i][j]==1)
f[i][j] = 0;
else
f[i][j] = f[i-1][j] + f[i][j-1];
}
}
printf("%lld\n",f[n][m]);
return 0;
}
相關文章
- P1002 [NOIP2002 普及組] 過河卒
- 小馬過河-RPC之旅RPC
- 洛谷題單指南-動態規劃1-P1002 [NOIP2002 普及組] 過河卒動態規劃
- 南沙C信++奧賽陳老師解一本通題: 1314:【例3.6】過河卒(Noip2002)
- LeLeetCode 403. 青蛙過河LeetCode
- 遞迴和遞推總結遞迴
- 遞推--街區
- 攔截過濾器模式過濾器模式
- 遞推,遞迴,貪心,列舉思想遞迴
- YbtOJ 遞推演算法課堂過關 例5 平鋪方案【遞推(簡單DP)】演算法
- 1.遞推式
- 遞推--找數字
- 杭電2048(遞推)
- 演算法分析——青蛙過河問題演算法
- 10-17 c遞迴與遞推初識遞迴
- AI基礎:美女和野人過河問題AI
- Spring 過濾器和攔截器Spring過濾器
- 矩陣加速線性遞推矩陣
- 【矩陣乘法】【快速冪】遞推矩陣
- 演算法分析__遞推方程演算法
- 【組合數學】遞推方程 ( 有重根遞推方程求解問題 | 問題提出 )
- LeetCode 403 Frog Jump 青蛙過河 Javascirpt 解決方案LeetCodeJava
- OpenJ_Bailian - 2945 攔截導彈(最長遞減子序列)AI
- 攔截器(Interceptor)與過濾器(Filter)過濾器Filter
- Springboot通過攔截器攔截請求資訊收集到日誌Spring Boot
- 動態dp & 矩陣加速遞推矩陣
- 遞推方程的特徵方程解法特徵
- 遞推-*三國佚事——巴蜀之危
- 防卒指南:996+健身≈猝死996
- 聊一聊過濾器與攔截器過濾器
- spring中的過濾器與攔截器Spring過濾器
- SpringBoot 攔截器、過濾器、監聽器Spring Boot過濾器
- 迭代與遞迴--你被遞迴搞暈過嗎?遞迴
- 課時22:函式:遞迴是神馬函式遞迴
- 遞推演算法與遞推套路(手撕演算法篇)演算法
- 遞推演算法與遞推套路(演算法基礎篇)演算法
- “簡訊攔截馬”黑色產業鏈與溯源取證研究產業
- 推進快遞包裝“綠色革命”