-
题目描述:
-
把一个个大小差一圈的筐叠上去,使得从上往下看时,边筐花色交错。这个工作现在要让计算机来完成,得看你的了。
-
输入:
-
输入是一个个的三元组,分别是,外筐尺寸n(n为满足0<n<80的奇整数),中心花色字符,外筐花色字符,后二者都为ASCII可见字符;
-
输出:
-
输出叠在一起的筐图案,中心花色与外筐花色字符从内层起交错相叠,多筐相叠时,最外筐的角总是被打磨掉。叠筐与叠筐之间应有一行间隔。
这题相当的水,没有说明外角被打磨掉是直接输出换行还是空格。另外就是要注意边界问题,当n == 1 时的情况。
-
样例输入:
-
11 B A 5 @ W
-
样例输出:
-
AAAAAAAAA ABBBBBBBBBA ABAAAAAAABA ABABBBBBABA ABABAAABABA ABABABABABA ABABAAABABA ABABBBBBABA ABAAAAAAABA ABBBBBBBBBA AAAAAAAAA @@@ @WWW@ @W@W@ @WWW@ @@@
import java.util.Scanner; public class Main{ /** * @param args */ public static void main(String[] args) { Scanner scanner = new Scanner(System.in); while( scanner.hasNext() ){ int n = scanner.nextInt(); char c[] = new char[2]; c[0] = scanner.next().toCharArray()[0]; c[1] = scanner.next().toCharArray()[0]; char result[][] = new char[n][n]; for (int i = 1, j = 1; i < n+1; i+=2, j++) { int x = n/2, y = x; x = x -(j-1); y = y -(j-1); char inputChar = j%2 == 1?c[0]:c[1]; for (int k = 1; k <= i; k++) { result[x+k-1][y] = result [x][y+k-1] = result[x+i-1][y+k-1] = result[x+k-1][y+i-1] = inputChar; } } if(n > 1){ result[0][0] = result[0][n-1] = result[n-1][0] = result[n-1][n-1] = ' '; System.out.println(); for(int i = 0; i < n; i++){ for (int j = 0; j < n; j++) { System.out.print(result[i][j]); if(j == n-1){ System.out.println(); } } } }else{ System.out.println(c[0]); } } } } /************************************************************** Problem: 1432 User: yihukurama Language: Java Result: Accepted Time:410 ms Memory:23976 kb ****************************************************************/