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

📄 chessboardcover.cpp

📁 Chessboard Cover,On a chessboard
💻 CPP
字号:
#include <iomanip>
#include <iostream>
#include <string>
#include <locale>
#include "math.h"
#include <stdlib.h>
#include <time.h>
using namespace std;
int **A;
int num;
void input(int &N,int &row,int &column)
{
  cout<<"Please input the length of chessboard: ";
  cin>>N;
  cout<<"Please input the specific position(row,column):"<<endl;
  cout<<"row=";
  cin>>row;
  cout<<"column=";
  cin>>column;
  cout<<endl;
  int *p;
  A=new int*[N];
  for(int i=0;i<N;i++)
    {
      p=new int[N];
      A[i]=p;
    }
  A[row-1][column-1]=0;  
  
}
void Divide(int n,int row,int column,int p1,int p2)
{
  if(n==1)
    return;
  int size=n/2,number=num++;
  if(row<p1+size&&column<p2+size) //left top
    Divide(size,row,column,p1,p2);
  else
    {
      A[p1+size-2][p2+size-2]=number;
      Divide(size,p1+size-1,p2+size-1,p1,p2);
    }

  if(row>p1+size-1&&column<p2+size) //left down
    Divide(size,row,column,p1+size,p2);
  else
    {
      A[p1+size-1][p2+size-2]=number;
      Divide(size,p1+size,p2+size-1,p1+size,p2);
    }
  
  if(row<p1+size&&column>=p2+size) //Right top
    Divide(size,row,column,p1,p2+size);
  else
    {
      A[p1+size-2][p2+size-1]=number;
      Divide(size,p1+size-1,p2+size,p1,p2+size);
    }

  if(row>=p1+size&&column>=p2+size) //Right down
    Divide(size,row,column,p1+size,p2+size);
  else
    {
      A[p1+size-1][p2+size-1]=number;
      Divide(size,p1+size,p2+size,p1+size,p2+size);
    }
}
void PrintA(int n)
{
  cout<<endl;
  for(int i=0;i<n;i++)
    {
      for(int j=0;j<n;j++)
        cout<<setw(3)<<A[i][j];
      cout<<endl;
    }
}

  
    
main()
{
  int N,row,column;
  input(N,row,column);
  num=1;
  Divide(N,row,column,1,1);
  PrintA(N);
  return 0;
}

⌨️ 快捷键说明

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