87人过2人,地狱难度。 放眼望去,满江红……

4 条评论

  • @ 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
          上传者