//応用情報技術者試験 平成30年春期問3 設問3 var dv = ["", -2, -1, 1, 2, 2, 1, -1, -2]; var dh = ["", 1, 2, 2, 1, -1, -2, -2, -1]; var M = 4, N = 3; var m, n; var board = []; var printFlag; var start_ms = Date.now(); //実行時間の計測用 function search(i, v, h) { if (board[v][h] == 0) { board[v][h] = i; if (i == m*n) { printBoard(); printFlag = 1; } else { for (var j=1; j<=8; j++) { search(i+1, v + dv[j], h + dh[j]); } } board[v][h] = 0; } } function printBoard() { for (var v=3; v<=m+2; v++) { for (var h=3; h<=n+2; h++) { document.write(board[v][h]+'.'); } document.write('<br>'); //改行 } document.write('<br>'); //改行 } (function main() { m = M, n = N; //boardの初期化 for (var y=1; y<=m+4; y++) { board[y] = []; for (var x=1; x<=n+4; x++) { if (y >= 3 && y <= m+2 && x >= 3 && x <= n+2) { board[y][x] = 0; } else { board[y][x] = 1; } } } printFlag = 0; search(1, 3, 3); if (printFlag == 0) { document.write('解答がありません。'); } })(); document.write('実行時間は、'+(Date.now() - start_ms)+'ミリ秒');