http://acm.hrbust.edu.cn/index.php?m=ProblemSet&a=showProblem&problem_id=2085
A.囧 | |||||
|
|||||
Description | |||||
DS最近很囧,总是不能把妹子哄开心。所以,邪恶的他也想让你们囧一囧。 他给你一个数字 n 让你输出囧字的迭代(详见样例)。 |
|||||
Input | |||||
第一行一个整数,代表数据的组数。 每组数据一个整数 n(1≤n≤7) |
|||||
Output | |||||
每组数据输出一个囧字的图形. |
|||||
Sample Input | |||||
2 1 2 |
|||||
Sample Output | |||||
+------+ | | | / | | | | +--+ | | | | | | | | | +-+--+-+ +--------------+ | | | / | | / | | / | | / | | / | | | | +------+ | | | | | | | / | | | | | | | | +--+ | | | | | | | | | | | | | | +---+-+--+-+---+ |
|||||
Hint | |||||
再友情给个n = 3 的样例,请注意囧字的迭代方式。+------------------------------+ | | | / | | / | | / | | / | | / | | / | | / | | / | | / | | / | | / | | / | | / | | | | +--------------+ | | | | | | | / | | | | / | | | | / | | | | / | | | | / | | | | | | | | +------+ | | | | | | | | | | | / | | | | | | | | | | | | +--+ | | | | | | | | | | | | | | | | | | | +-------+---+-+--+-+---+-------+ |
1 #include<iostream> 2 #include<stdio.h> 3 using namespace std; 4 char d[600][600]; 5 void dayin(int x,int r,int l) 6 { 7 if(x<0) 8 return ; 9 int n; 10 n=1<<(x+2); 11 for(int i=0; i<n; i++) //上面一横 12 d[r][l+i]='-'; 13 for(int i=0; i<n; i++) 14 { 15 d[r+i][l]='|'; 16 d[r+i][l+n-1]='|'; 17 } 18 d[r][l]='+'; 19 d[r][l+n-1]='+'; 20 for(int i=0;i<n;i++) //下面一横 21 d[r+n-1][l+i]='-'; 22 d[r+n-1][l]=d[r+n-1][l+n-1]='+'; 23 int xie; 24 xie=(1<<(x+1))-3; 25 for(int i=0; i<xie;i++) 26 { 27 d[r+xie+1 -i][l+1+1+i]='/'; //撇 和 捺 28 d[r+xie+1 -i][l+n-1-1-1-i]='\'; 29 } 30 dayin(x-1,r+n/2,l+n/4); 31 } 32 int main() 33 { 34 int n,t; 35 scanf("%d",&t); 36 while(t--) 37 { 38 scanf("%d",&n); 39 int temp; 40 temp=1<<(n+2); 41 for(int i=0; i<temp; i++) 42 for(int j=0; j<temp; j++) 43 d[i][j]=' '; 44 dayin(n,0,0); 45 for(int i=0; i<temp; i++) 46 { 47 for(int j=0; j<temp; j++) 48 printf("%c",d[i][j]); 49 printf(" "); 50 } 51 } 52 return 0; 53 }
#include<iostream>#include<stdio.h>using namespace std;char d[600][600];void dayin(int x,int r,int l){ if(x<0) return ; int n; n=1<<(x+2); for(int i=0; i<n; i++) //上面一横 d[r][l+i]='-'; for(int i=0; i<n; i++) { d[r+i][l]='|'; d[r+i][l+n-1]='|'; } d[r][l]='+'; d[r][l+n-1]='+'; for(int i=0;i<n;i++) //下面一横 d[r+n-1][l+i]='-'; d[r+n-1][l]=d[r+n-1][l+n-1]='+'; int xie; xie=(1<<(x+1))-3; for(int i=0; i<xie;i++) { d[r+xie+1 -i][l+1+1+i]='/'; //撇 和 捺 d[r+xie+1 -i][l+n-1-1-1-i]='\'; } dayin(x-1,r+n/2,l+n/4);}int main(){ int n,t; scanf("%d",&t); while(t--) { scanf("%d",&n); int temp; temp=1<<(n+2); for(int i=0; i<temp; i++) for(int j=0; j<temp; j++) d[i][j]=' '; dayin(n,0,0); for(int i=0; i<temp; i++) { for(int j=0; j<temp; j++) printf("%c",d[i][j]); printf(" "); } } return 0;}