?? chess.cpp
字號:
#include <iostream.h>
int title=1;
int b[4][4];
void chess_bord( int x, int y, int x0, int y0 , int size)
{
if (size==1) return ;
int t=title++;
int s;
//骨牌編號加1,用于覆蓋中間區域
s=size/2; //將棋盤分成四塊
if (x0<x+s&& y0<y+s) //特殊方格在左上角的棋盤中
chess_bord(x,y,x0,y0,s); //該子棋盤直接構成子問題,直接遞歸
else
{
b[x+s-1][y+s-1]=t; //將該子棋盤右下角蓋上
chess_bord(x,y,x+s-1,y+s-1,s); //其余方格構成遞歸
}
if (x0>=x+s && y0 <y+s) //特殊方格在左下角的棋盤中
chess_bord(x+s,y,x0,y0,s);
else
{
b[x+s][y+s-1]=t; //將該子棋盤右上角蓋上
chess_bord(x+s,y,x+s,y+s-1,s) ;//其余方格構成遞歸
}
if (x0<x+s&&y0>=y+s) //特殊方格在右上角子棋盤中
chess_bord(x,y+s,x0,y0,s);
else
{
b[x+s-1][y+s]=t; //將該子棋盤左下角蓋上
chess_bord(x,y+s,x+s-1,y+s,s);//其余方格構成遞歸
}
if (x0>=x+s&& y0>=y+s) //特殊方格在右下角子棋盤中
chess_bord(x+s,y+s,x0,y0,s);
else
{
b[x+s][y+s]=t;//將該子棋盤左下角蓋上
chess_bord(x+s,y+s,x+s,y+s,s);//其余方格構成遞歸
}
}
int main()
{
int x0,y0;
cout<<"請輸入特殊方格所在的行號和列號(從零開始):"<<endl;
cin>>x0>>y0;
chess_bord(0,0,x0,y0,4);
for (int i=0;i<4;i++)
{
for (int j=0;j<4;j++)
cout<<b[i][j]<<" ";
cout<<endl;
}
return 0;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -