⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 qpfg.cpp

📁 棋盘覆盖问题:在一个2的k次幂乘以2的k次幂个方格组成的棋盘中
💻 CPP
字号:
// qpfg.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"

#include<iostream.h>

#include <iomanip.h>//参数化输入/输出(新学会的,呵呵,)

int tile=1;
const int max=16;
int board[max][max];
void chessboard(int tr,int tc,int dr,int dc,int size)
{
	if(size==1)return;
	int t=tile++,
		s=size/2;
	if(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 OutputBoard(int size)
{
   for (int i = 0; i < size; i++) 
   {
         for (int j = 0; j < size; j++)
		cout<<setw(4)<<board[i][j]<<" ";
        cout << endl;
   }
}

void main(){
	int dr=0,dc=0,size;
	cout<<"请输入棋盘的大小:"<<endl;
	cin>>size;
	cout<<"请输入特殊棋盘的位置:"<<endl;
	cin>>dr;
	cin>>dc;
	cout<<endl;
	chessboard(0,0,dr,dc,size);
    OutputBoard(size);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -