- 棋盘覆盖问题(chessboard)
关于本域最难之题……
- 2022-7-15 15:49:17 @
87人过2人,地狱难度。 放眼望去,满江红……
4 条评论
-
刘书允 LV 6 @ 2025-9-7 13:42:30
#include <iostream> #include <iomanip> using namespace std; int board[65][65], tile; /* tile为纸片编号 */ void chessboard( int tr, int tc, int dr, int dc, int size ) /* dr,dc依次为特殊方格的行、列号 */ { int t, s; if ( size == 1 ) return ; t = tile++; s = size / 2; if ((dr<tr+s)&&(dc<tc+s) / dr<tr+s&&dc<tc+s ) chessboard( tr, tc, dr, dc, s ); else{ board[tr + s -1][tc + s -1] = t; chessboard(tr,tc,tr+s-1,tc+s-1,s); } if ( dr < tr + s && dc >= tc + s ) chessboard( tr, tc + s, dr, dc, s ); else{ board[tr + s -1][tc + s] = t; chessboard(tr,tc+s,tr+s-1,tc+s,s); } if ( dr >= tr + s && dc < tc + s ) chessboard( tr + s, tc, dr, dc, s ); else{ board[tr + s][tc + s -1] = t; chessboard(tr+s,tc,tr+s,tc+s-1,s); } if ( dr >= tr + s && dc >= tc + s ) chessboard( tr + s, tc + s, dr, dc, s ); else{ board[tr + s][tc + s] = t; chessboard(tr+s,tc+s,tr+s,tc+s,s); } } void prtl( int b[][65], int n ) { int i, j; for ( i =1; i <= n; i++ ) { for ( j =1; j <= n; j++ ) if(b[i][j]!=-1)cout<< b[i][j]<<' '; else cout<<0<<' '; cout << endl; } } int main() { int size, dr, dc; cin >> size; cin >> dr >> dc; board[dr][dc] = -1; tile++; chessboard( 1, 1, dr, dc, size ); prtl( board, size ); return 0; }
-
2024-9-16 16:28:04@
%%%
-
2022-7-29 18:47:28@
zys直接切了/jk
-
2022-7-23 19:18:48@
黑,必须黑/kk
- 1
信息
- ID
- 88
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- (无)
- 递交数
- 90
- 已通过
- 2
- 上传者