7-7 p/n棋盘 (10 分)
输出字符'p'和'n'的棋盘。
输入格式:
一个数n(表示棋盘大小,即为2n∗2n的字符棋盘,其中n<10)。
输出格式:
输出一个2n∗2n的字符棋盘('字符由‘p’和‘n’组成,'p':为正,'n’为负的意思),其规则为:规模为n的棋盘的左上角,右上角和右下角为规模为n-1的棋盘,其左下角为左上角的取反(即对应字母为‘p’则变为'n';字母为‘n’则变为'p')。
输入样例:
1
2
输出样例:
pp
np
pppp
npnp
nnpp
pnnp
作者
严华云
单位
湖州师范学院
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
#include<bits/stdc++.h> using namespace std; int board[1000][1000]; void chess(int x,int y,int z,int size); int main(int argc,const char *argv[]) { int n; int size; int i,j; //cout<<"输入2^n * 2^n的棋盘参数n:"; cin>>n; size=pow(2,n); chess(1,1,1,size); for(i=1;i<=pow(2,n);i++) { for(j=1;j<=pow(2,n);j++) { if(board[i][j]==1) { cout<<"p"; } else if(board[i][j]==0) { cout<<"n"; } } cout<<endl; } return 0; } void chess(int x,int y,int z,int size) { int half; if(size==1) { board[x][y]=z; return; } half=size/2; chess(x,y,z,half); chess(x,y+half,z,half); if(z==1){ chess(x+half,y,0,half); } else{ chess(x+half,y,1,half); } chess(x+half,y+half,z,half); }