P1002过河卒
提供幾組測試數(shù)據(jù)吧
8 7 3 2
102
14 16 4 5
10560723
20 20 10 10
21388094780
20 20 4 0
56477364570
首先想到的是從終點開始,向上,向左遞歸,超時。
故由遞歸推出了遞推式。
這兩天沒有狀態(tài),差點被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++) {//把馬領(lǐng)域標(biāo)記好,后面不經(jīng)過改點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
首先想到的是從終點開始,向上,向左遞歸,超時。
故由遞歸推出了遞推式。
這兩天沒有狀態(tài),差點被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++) {//把馬領(lǐng)域標(biāo)記好,后面不經(jīng)過改點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; }
總結(jié)
- 上一篇: 17 岁高中生独立开发全球疫情追踪网站火
- 下一篇: 聊聊领域分析与业务建模