1219 騎士遊歷
題目描述 description
設有乙個n*m的棋盤(2≤n≤50,2≤m≤50),如下圖,在棋盤上有乙個中國象棋馬。
規定:1)馬只能走日字
2)馬只能向右跳
問給定起點x1,y1和終點x2,y2,求出馬從x1,y1出發到x2,y2的合法路徑條數。
輸入描述 input description
第一行2個整數n和m
第二行4個整數x1,y1,x2,y2
輸出描述 output description
輸出方案數
樣例輸入 sample input
30 30
1 15 3 15
樣例輸出 sample output
#include#include#includelong long a[100][100];
int main()
} printf("%lld",a[ex][ey]);//打表,動態規劃
return 0;
}
第二種解法:
#includeint main()
;int n,m,x,y,a,b;
scanf("%d %d %d %d %d %d",&n,&m,&x,&y,&a,&b);
dp[x][y]=1;
for(int i=x+1;i<=n;i++)
for(int j=1;j<=m;j++)
dp[i][j]=dp[i-2][j-1]+dp[i-2][j+1]+dp[i-1][j-2]+dp[i-1][j+2];
printf("%lld",dp[a][b]);
}
你可能會問,為什麼不判斷其是否越界,,因為即使其越界了,,因為是二維陣列,所以其越界了值也會為0,,這就是為什麼其i=x+1而不是從0開始的原因了,而且這也提高了效率!
第三種: 目前沒看懂
#includeint n,m,a,b,c,d,vis[55][55],way[4][2]=,,,};
long long f[55][55],need[55][55];
void go(int x,int y)
for(int i=0;i<4;i++)
if(x+way[i][0]<=n&&x+way[i][0]>0&&y+way[i][1]<=m&&y+way[i][1]>0&&!vis[x+way[i][0]][y+way[i][1]])
need[x][y]=f[c][d]-now;
}int main()
wikioi 1219 騎士遊歷
設有乙個n m的棋盤 2 n 50,2 m 50 如下圖,在棋盤上有乙個中國象棋馬。規定 1 馬只能走日字 2 馬只能向右跳 問給定起點x1,y1和終點x2,y2,求出馬從x1,y1出發到x2,y2的合法路徑條數。第一行2個整數n和m 第二行4個整數x1,y1,x2,y2 輸出方案數 30 30 1...
ACM 1219 騎士遊歷 dp
22人推薦 收藏發題解 設有乙個n m的棋盤 2 n 50,2 m 50 如下圖,在棋盤上有乙個中國象棋馬。規定 1 馬只能走日字 2 馬只能向右跳 問給定起點x1,y1和終點x2,y2,求出馬從x1,y1出發到x2,y2的合法路徑條數。第一行2個整數n和m 第二行4個整數x1,y1,x2,y2 輸...
codevs天梯 騎士遊歷
題目 設有乙個n m的棋盤 2 n 50,2 m 50 如下圖,在棋盤上有乙個中國象棋馬。規定 1 馬只能走日字 2 馬只能向右跳 問給定起點x1,y1和終點x2,y2,求出馬從x1,y1出發到x2,y2的合法路徑條數。分析 當初一開始是用dfs做的,現在一開始也想用dfs做。發現題目劃區是dp,就...