로곡 P1002하수인dp 패스 수
mark[][] 마커 제어의 격자 dp[i][j]는 (i, j)점까지 가는 경로를 표시하고 0으로 초기화하며 dp[0][0]는 1로 초기화합니다.상태 이동 방정식: dp[i][j]+=dp[i-1][j], dp[i][j]+=dp[i][j-1]
#include
using namespace std;
typedef long long LL;
int nx, ny, hx, hy;
LL dp[21][21] = {1};
bool mark[21][21] = {0};
int dx[8] = {-2, -1, 1, 2, 2, 1, -1, -2};
int dy[8] = {1, 2, 2, 1, -1, -2, -2, -1};
int main()
{
int i, j;
scanf("%d %d %d %d", &nx, &ny, &hx, &hy);
mark[hx][hy] = 1;
for(i = 0; i < 8; ++i)
if(hx+dx[i]>=0 && hx+dx[i]<=nx && hy+dy[i]>=0 && hy+dy[i]<=ny)
mark[hx+dx[i]][hy+dy[i]] = 1;
for(i = 0; i <= nx; ++i)
for(j = 0; j <= ny; ++j)
{
if(mark[i][j]) continue;
if(i) dp[i][j] += dp[i-1][j];
if(j) dp[i][j] += dp[i][j-1];
}
printf("%lld
", dp[nx][ny]);
return 0;
}