打印十字图

Posted mabeytang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了打印十字图相关的知识,希望对你有一定的参考价值。

问题描述

技术图片

技术图片

技术图片

 


Algorithm

一开始没想到对称,比较可恶,对称之后就是找规律了,这里放上网上找的一张图,题目里面的“图”实在是“不堪入目”。

技术图片


AC

技术图片
 1 #include<iostream>
 2 
 3 using namespace std;
 4 
 5 char m[5+4*30+1][5+4*30+1];
 6 
 7 void draw(int n)
 8 {
 9     for(int i=0;i<5+4*n;i++){
10         for(int j=0;j<5+4*n;j++){
11             m[i][j] = .; // 初始化为 . 
12         }
13     }
14     int i, j;i = j = 0;
15     for(i=2;i<(5+4*n+1)/2;i++){
16         for(j=0;j<=i-3;j+=2){
17             m[i][j] = $;
18         }
19         if(!(i&1)) // 偶数行 
20             m[i][j] = m[i][j+1] = m[i][j+2] = $;
21     }
22     // 折叠 对称
23     for(int i=0;i<(5+4*n+1)/2;i++){
24         for(int j=0;j<=i;j++){
25             m[j][i] = m[i][j];
26         }
27     }
28     for(int i=0;i<(5+4*n+1)/2;i++){
29         for(int j=5+4*n-1,k=0;j>=(5+4*n+1)/2;j--,k++){
30             m[i][j] = m[i][k];
31         }
32     } 
33     for(int i=(5+4*n-1),k=0;i>=(5+4*n+1)/2;i--,k++){
34         for(int j=0;j<5+4*n;j++){
35             m[i][j] = m[k][j];
36         }
37     }
38     
39     return;
40 }
41 
42 int main()
43 {
44     int n = 0;
45     while(cin>>n)
46     {
47         draw(n);
48         for(int i=0;i<5+4*n;i++){
49             for(int j=0;j<5+4*n;j++){
50                 cout<<m[i][j];
51             }
52             cout<<endl;
53         }
54     }
55 
56     return 0;
57 }
View Code

2019-02-02

17:47:32

以上是关于打印十字图的主要内容,如果未能解决你的问题,请参考以下文章

蓝桥杯历届试题 打印十字图

蓝桥杯打印十字图(图形规律)

蓝桥杯 历届试题 打印十字图

打印十字图

打印十字图

蓝桥杯 历届试题 PREV-2 打印十字图