P1002过河卒
提供幾組測試數據吧
8 7 3 2
102
14 16 4 5
10560723
20 20 10 10
21388094780
20 20 4 0
56477364570
首先想到的是從終點開始,向上,向左遞歸,超時。
故由遞歸推出了遞推式。
這兩天沒有狀態,差點被map[x][y]還是map[y][x]繞暈了,故作此提醒。
#include <stdio.h> long long map[22][22]; int main() {int h1, h2, x, y, n[8][2] = {{1,-2},{-1,-2},{-2,-1},{-2,1},{-1,2},{1,2},{2,1},{2,-1}};//馬可移動的8個位置long long i, mX, mY;scanf("%d%d%d%d", &x, &y, &h1, &h2);map[0][1] = 1;h1++, h2++;x++, y++;map[h1][h2] = -1;for(i = 0; i < 8; i++) {//把馬領域標記好,后面不經過改點mX = h1+n[i][0];mY = h2+n[i][1];if(mY>=1&&mY<=21 && mX>=1&&mX<=21) map[mX][mY] = -1;}for(i = 1; i <= x; i++) {for(int j = 1; j <= y; j++) {if(map[i][j] != -1) {mX = map[i-1][j];mY = map[i][j-1];if(mX > 0) map[i][j] += mX;if(mY > 0) map[i][j] += mY;}}}printf("%lld\n", map[x][y]);return 0; }
8 7 3 2
102
14 16 4 5
10560723
20 20 10 10
21388094780
20 20 4 0
56477364570
首先想到的是從終點開始,向上,向左遞歸,超時。
故由遞歸推出了遞推式。
這兩天沒有狀態,差點被map[x][y]還是map[y][x]繞暈了,故作此提醒。
#include <stdio.h> long long map[22][22]; int main() {int h1, h2, x, y, n[8][2] = {{1,-2},{-1,-2},{-2,-1},{-2,1},{-1,2},{1,2},{2,1},{2,-1}};//馬可移動的8個位置long long i, mX, mY;scanf("%d%d%d%d", &x, &y, &h1, &h2);map[0][1] = 1;h1++, h2++;x++, y++;map[h1][h2] = -1;for(i = 0; i < 8; i++) {//把馬領域標記好,后面不經過改點mX = h1+n[i][0];mY = h2+n[i][1];if(mY>=1&&mY<=21 && mX>=1&&mX<=21) map[mX][mY] = -1;}for(i = 1; i <= x; i++) {for(int j = 1; j <= y; j++) {if(map[i][j] != -1) {mX = map[i-1][j];mY = map[i][j-1];if(mX > 0) map[i][j] += mX;if(mY > 0) map[i][j] += mY;}}}printf("%lld\n", map[x][y]);return 0; }
總結
- 上一篇: 17 岁高中生独立开发全球疫情追踪网站火
- 下一篇: 聊聊领域分析与业务建模