链接:
https://www.nowcoder.com/acm/contest/67/G
来源:牛客网
来源:牛客网
题目描述
圈圈圆圆圈圈,lulu小朋友最近看喜羊羊看多了,老是受刺激就画圆圈,听到小于8的数字时,还会画出十分有规律的圆圈,现在你需要根据样例观察出规律,编写程序,根据输入的数字n(n<8),输出对应的圆圈。
输入描述:
第一行是样例数T(T<9) 第2到2+T-1行每行有一个整数n(n<8),代表lulu听到的数字
输出描述:
听到对应数字时,输出对应样子的圆圈。
#include<stdio.h> #include<string.h> #include<algorithm> using namespace std; char a[2][2500][2500]; int b[2][2500]; int main() { int t,n; scanf("%d",&t); while(t--) { scanf("%d",&n); int x,y=0,nx,ny,nn=1;//x是上一个状态,y是下一个状态,nx,ny是控制格式的 a[0][0][0]='O'; b[0][0]=0; while(n--) { x=y; y= x==1?0:1;//y代表下个状态 memset(b[y],0,sizeof(b[y])); memset(a[y],'\0',sizeof(a[y])); for(int i=0; i<nn; i++) { for(int j=0; j<=b[x][i]; j++) { if(a[x][i][j]=='O') { nx=i*3; ny=j*3; a[y][0+nx][1+ny]='O'; b[y][0+nx]=1+ny; a[y][1+nx][0+ny]='O'; a[y][1+nx][2+ny]='O'; b[y][1+nx]=2+ny; a[y][2+nx][1+ny]='O'; b[y][2+nx]=1+ny; } } } nn*=3; } for(int i=0;i<nn;i++) { for(int j=0;j<=b[y][i];j++) { if(a[y][i][j]=='O') printf("O"); else printf(" "); } printf("\n"); } } }