📄 源程序.txt
字号:
#include <stdlib.h>
#include <fstream.h>
#include <iomanip.h>
#include <iostream.h>
int tile; //L型骨牌编号
int **chessarr;
void chessboard(int row0,int col0,int size,int sprow,int spcol) //棋盘覆盖函数
{
if(size==1) return; //如果棋盘规模=1,返回
int s=size/2; //分割棋盘
int t=++tile; //L型骨牌编号加1
//处理左上角子棋盘
if(sprow < row0+s && spcol < col0+s)
chessboard(row0,col0,s,sprow,spcol);
else
{
chessarr[row0+s-1][col0+s-1]=t;
chessboard(row0,col0,s,row0+s-1,col0+s-1);
}
//处理右上角子棋盘
if(sprow < row0+s && spcol >= col0+s)
chessboard(row0,col0+s,s,sprow,spcol);
else
{
chessarr[row0+s-1][col0+s]=t;
chessboard(row0,col0+s,s,row0+s-1,col0+s);
}
//处理左下角子棋盘
if(sprow >= row0+s && spcol < col0+s)
chessboard(row0+s,col0,s,sprow,spcol);
else
{
chessarr[row0+s][col0+s-1]=t;
chessboard(row0+s,col0,s,row0+s,col0+s-1);
}
//处理右下角子棋盘
if(sprow >= row0+s && spcol >= col0+s)
chessboard(row0+s,col0+s,s,sprow,spcol);
else
{
chessarr[row0+s][col0+s]=t;
chessboard(row0+s,col0+s,s,row0+s,col0+s);
}
}
void main()
{
int k,x,y; //阶数及特殊点位置
int i,j,n; //棋盘规模为 n*n
/*ifstream in("input.txt"); //打开输入文件
if(in.fail())
{
cout << "the input.txt is not exist!";
exit(1);
}
in>>k>>x>>y; //读入阶数k和特殊方格位置
in.close(); //关闭输入文件
*/
//cout<<"input the k of the chess:";
cout<<"输入棋盘的阶数";
cin>>k;
cout<<endl;
cout<<"输入特殊方格的行数";
cin>>x;
cout<<endl;
cout<<"输入特殊方格的列数";
cin>>y;
cout<<endl;
if (k<1)
{
cout << "K<1, Error input.txt!";
exit (1);
}
for (i=0,n=1;i<k;i++)
n*=2;
//在堆内存中建立棋盘数组,填充特殊方格
if((chessarr=new int*[n])==NULL)
{
cout << "Can't allocate more memory,terminating." << endl;
exit (1);
}
for (i=0;i<n;i++ )
{
if((chessarr[i]=new int[n])==NULL)
{
cout << "Can't allocate more memory,terminating." << endl;
exit (1);
}
}
chessarr[x-1][y-1]=0;
tile=0;
chessboard(0,0,n,x-1,y-1); //进行棋盘覆盖,左上角位置0,0; 棋盘宽度n; 特殊点x,y
ofstream out("output.txt"); //创建输出文件
//同时输出到文件和屏幕
for (i=0;i<n;i++)
{
for (j=0;j<n;j++ )
{
out << setw(5) << chessarr[i][j];
cout << setw(5) << chessarr[i][j];
}
out << endl;
cout << endl;
}
out.close(); //关闭输出文件
//释放内存
for(i=0;i<n;i++)
delete[] chessarr[i];
delete[] chessarr;
return;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -