#include<stdio.h> unsigned long long max(unsigned long long a, unsigned long long b) { if (a > b) return a; else return b; } int main(void) { int horse[30][30] = { 0 }; unsigned long long array[30][30] = { 0 }; int ban1[8] = { 2,1,-1,-2,-2,-1,1,2 }; int ban2[8] = { 1,2,2,1,-1,-2,-2,-1 }; int x, y, m, n; scanf("%d %d %d %d", &x, &y, &m, &n); x += 2; y += 2; m += 2; n += 2; array[2][2] = 1; horse[m][n] = 1; for (int i = 0; i < 8; i++) { horse[m + ban1[i]][n + ban2[i]] = 1; } for (int i = 2; i <= x; i++) { for (int j = 2; j <= y; j++) { if (horse[i][j]) continue; array[i][j] = max(array[i][j], array[i - 1][j] + array[i][j - 1]); } } printf("%llu", array[x][y]); }
原文:https://www.cnblogs.com/loliconsk/p/14291101.html