藍橋杯—歷屆試題(打印十字圖)

試題 歷屆試題 打印十字圖

資源限制:

時間限制:1.0s   內存限制:256.0MBjava

問題描述:

小明爲某機構設計了一個十字型的徽標(並不是紅十字會啊),以下所示:數組

..$$$$$$$$$$$$$..
..$...........$..
$$$.$$$$$$$$$.$$$
$...$.......$...$
$.$$$.$$$$$.$$$.$
$.$...$...$...$.$
$.$.$$$.$.$$$.$.$
$.$.$...$...$.$.$
$.$.$.$$$$$.$.$.$
$.$.$...$...$.$.$
$.$.$$$.$.$$$.$.$
$.$...$...$...$.$
$.$$$.$$$$$.$$$.$
$...$.......$...$
$$$.$$$$$$$$$.$$$
..$...........$..
..$$$$$$$$$$$$$..字體

 

對方同時也須要在電腦dos窗口中以字符的形式輸出該標誌,並能任意控制層數。spa

 

輸入格式:

一個正整數 n (n<30) 表示要求打印圖形的層數。設計

輸出格式:

對應包圍層數的該標誌。code

樣例輸入1:

1blog

樣例輸出1:

..$$$$$..
..$...$..
$$$.$.$$$
$...$...$
$.$$$$$.$
$...$...$
$$$.$.$$$
..$...$..
..$$$$$..圖片

 

樣例輸入2:

3內存

樣例輸出2:

..$$$$$$$$$$$$$..
..$...........$..
$$$.$$$$$$$$$.$$$
$...$.......$...$
$.$$$.$$$$$.$$$.$
$.$...$...$...$.$
$.$.$$$.$.$$$.$.$
$.$.$...$...$.$.$
$.$.$.$$$$$.$.$.$
$.$.$...$...$.$.$
$.$.$$$.$.$$$.$.$
$.$...$...$...$.$
$.$$$.$$$$$.$$$.$
$...$.......$...$
$$$.$$$$$$$$$.$$$
..$...........$..
..$$$$$$$$$$$$$..資源

提示

請仔細觀察樣例,尤爲要注意句點的數量和輸出位置。


思路:

  首先看到題目,臥槽,這什麼鬼圖,哪裏有十字形的徽標。傻逼同樣看着題目,看着眼睛都花了。冷靜下來想到多是字體或者大小啥的緣由致使看不清楚圖片形狀。而後作出解這個題最重要的一步:複製到記事本當中,而後修改字體。

 

 

這樣看是否是就能夠清楚的看出來規則了。而後就是找不一樣,找相同了。

相同點:中間的一個十字

不一樣點(找規律的點):外面一層一層的增長。

 1 package daily_practice;
 2 
 3 import java.util.Scanner;
 4 
 5 public class Main{
 6     public static void main(String args[]) {
 7         Scanner scan = new Scanner(System.in);
 8         int n = scan.nextInt();
 9         scan.close();
10         char[][] map = new char[5+4*n][5+4*n];
11         
12         for(int i = (5+4*n)/2 - 2; i <= (5+4*n)/2 + 2; i++) {                //輸入圖像中級的+字
13             for(int j = (5+4*n)/2 - 2; j <= (5+4*n)/2 + 2; j++) {
14                 if(i == (5+4*n)/2 || j == (5+4*n)/2) map[i][j] = '$';
15             }
16         }
17         
18         for(int cen = 1; cen <= n; cen++) {    
19             for(int i = 0; i < 5+4*n; i++) {                //由於輸出圖形徹底對稱,So只須要數組的行,就能夠用杭來表示列
20                     if(i>cen*2 && i < 4+4*n - cen*2 ) {            //輸出part1
21                         map[i][(cen-1)*2] = '$';
22                         map[i][(4+4*n) - (cen-1)*2] = '$';
23                         map[(cen-1)*2][i] = '$';
24                         map[(4+4*n) - (cen-1)*2][i] = '$';
25                     }
26                     if(i == cen*2) {                            //輸出part2
27                         for(int m = 0; m < 3; m++) {
28                             map[i][m+(cen-1)*2] = '$';
29                             map[m+(cen-1)*2][i] = '$';
30                             map[i][(4+4*n) - (m+(cen-1)*2)] = '$';
31                             map[(4+4*n) - (m+(cen-1)*2)][i] = '$';
32                         }
33                     }
34                     if(i == 4+4*n - cen*2) {                    //輸出part3
35                         for(int m = 0; m < 3; m++) {
36                             map[i][i+m] = '$';
37                             map[i+m][i] = '$';
38                             map[i][(cen-1)*2 + m] = '$';
39                             map[(cen-1)*2 + m][i] = '$';
40                         }
41                     }
42             }
43         }
44         //輸出地圖
45         for(int i = 0; i < 5+4*n; i++) {
46             for(int j = 0; j < 5+4*n; j++) {
47                 if(map[i][j] == '$') System.out.print(map[i][j]);
48                 else System.out.print(".");
49             }
50             System.out.println();
51         }
52     }
53 }

 

相關文章
相關標籤/搜索