『鐘万北』08.ダイナミックプランニング:シングルステップ(Jumpgame)
下にゲームボードがあり、n×nサイズのメッシュに1から9まで整数を図に示すように書きます.このゲームの目的は、ゲームボードの左上から、ゲーム波の右下に到達することです.
各グリッドの数字は、下または右に移動できます.
コード8.4ベースケース:ゲームボードを離れるとfalse、最後のグリッドに達するとtrue 現在のセルの数値=jumpSizeを保存した後、右に曲がってjump(y,x+jumpSize)に戻り、下にy+jumpSize,x)のtrue値に戻ります. ジャンプ()は、入力が固定されている場合、その結果が常に同じ関数である参照透明関数であるため、コメントを適用することができる.
各グリッドの数字は、下または右に移動できます.
コード8.4
int n, board[100][100];
bool jump(int y, int x) {
if (y >= n || x >= n) return false;
if (y == n - 1 && x == n - 1) return true;
int jumpSize = board[y][x];
return jump(y + jumpSize, x) || jump(y, x + jumpSize);
}
int n, board[100][100];
int cache[100][100];
int jump2(int y, int x) {
if (y >= n || x >= n) return 0;
if (y == n - 1 && x == n - 1) return 1;
int& ret = cache[y][x];
if (ret != -1) return ret;
int jumpSize = board[y][x];
return ret=jump2(y + jumpSize, x) || jump2(y, x + jumpSize);
}
Reference
この問題について(『鐘万北』08.ダイナミックプランニング:シングルステップ(Jumpgame)), 我々は、より多くの情報をここで見つけました https://velog.io/@kimmy/종만북-08.-동적계획법외발-뛰기-Jumpgameテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol