📄 chessboardcover.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 + -