骑士游历 - dp

时间:2021-04-07 05:16:49

题目地址:http://www.51cpc.com/web/problem.php?id=1586

Summarize:

1. 题目坐标系所给 x,y与惯用表示横纵坐标相反

2. 搜索超时,使用动规;

 顺序扫描AC,但反序扫描WA,后续反省;

3.  走“日”字包括横向与竖向;

4.  数据范围爆int;

附顺序动规代码:

 /*
2018-07-25 骑士游历
题中给出坐标图,x,y与常规颠倒
*/
#include<iostream>
#include<cstring>
using namespace std;
#define LL long long int n,m;
int x1,y1,x2,y2;
LL dp[][]; int main()
{
ios::sync_with_stdio(false); while(cin>>n>>m)
{
cin>>x1>>y1>>x2>>y2;
x1--,y1--,x2--,y2--; if(n < ) {
cout<<<<endl;
continue;
} memset(dp, , sizeof(dp));
dp[x1][y1] = ;
for(int i=x1; i<=x2; i++)
for(int j=; j<n; j++)
{
if(j>= && i+<m) dp[i+][j-] += dp[i][j];
if(j+<n && i+<m) dp[i+][j+] += dp[i][j];
if(j+<n && i+<m) dp[i+][j+] += dp[i][j];
if(j>= && i+<m) dp[i+][j-] += dp[i][j];
}
cout<<dp[x2][y2]<<endl;
} return ;
}