算法 —— 3行3列包括9个字符的图形

试题描述:下图是一个3行3列包括9个字符的图形。
# #
 #
# #
第一层次的的打印效果和原图一样:
# #
 #
# #
第二层次的打印效果是一种9行9列的嵌套显示:
# #   # #
 #     #
# #   # #
   # #   
    #    
   # #   
# #   # #
 #     #
# #   # #
程序代码如下,请补充完整。

纯属个人见解,如果有什么问题、疑惑或者更好的算法,欢迎在评论区留言

 1 package cn.tudou;
 2 
 3 public class Demo9 {
 4     public static void main(String[] args) {
 5         String template[] = { "* *", " * ", "* *" };
 6         int level = 2;
 7         copy(template, template, level);
 8     }
 9 
10     private static void copy(String[] template1, String[] template2, int level) {
11         --level;
12         if (level > 0) {
13             int n1 = template1.length;
14             int n2 = template2.length;
15             String[] tmpTemplate = new String[n2 * n1]; // 第1行所缺代码
16             int k = 0;
17             String spaceS = spaceStr(n2);
18             for (int i = 0; i < n1; ++i) {
19                 for (int j = 0; j < n1; ++j) {
20                     k = i * n2;
21                     if (template1[i].charAt(j) == ' ') {
22                         for (int x = 0; x < n2; ++x) {
23                             if (tmpTemplate[k] != null)
24                                 tmpTemplate[k] += (spaceS);
25                             else
26                                 tmpTemplate[k] = new String(spaceS);
27                             k++;
28                         }
29                     } else {
30                         for (int x = 0; x < n2; ++x) {
31                             if (tmpTemplate[k] != null)
32                                 tmpTemplate[k] += template1[x]; // 第2行所缺代码
33                             else
34                                 tmpTemplate[k] = new String(template1[x]); // 第3行所缺代码
35                             k++;
36                         }
37                     }
38                 }
39             }
40             copy(template1, tmpTemplate, level); // 第4行所缺代码
41         } else
42             print(template2); // 第5行所缺代码
43     }
44 
45     private static String spaceStr(int n) {
46         StringBuilder sb = new StringBuilder();
47         for (int i = 0; i < n; ++i) {
48             sb.append(" ");
49         }
50         return sb.toString();
51     }
52 
53     private static void print(String[] template) {
54         int n = template.length;
55         for (int i = 0; i < n; ++i) {
56             System.out.print(template[i]);
57             System.out.println();
58         }
59     }
60 }

 

posted @ 2017-06-06 21:54  卡洛小豆  阅读(431)  评论(0编辑  收藏  举报