题目
小明希望用星号拼凑,打印出一个大 X,他要求能够控制笔画的宽度和整个字的高度。
为了便于比对空格,所有的空白位置都以句点符来代替。
现在给定笔画的宽度和字的高度,请你将大 X 打印出来。
具体形式可参照下面样例。
输入格式
包含两个整数 ,表示笔的宽度以及 X 的高度。
输出格式
参照样例形式,输出大 X。
数据范围
,
,
保证是一个奇数。
输入样例1:
3 9
输出样例1:
***.....***
.***...***.
..***.***..
...*****...
....***....
...*****...
..***.***..
.***...***.
***.....***
输入样例2:
4 21
输出样例2:
****................****
.****..............****.
..****............****..
...****..........****...
....****........****....
.....****......****.....
......****....****......
.......****..****.......
........********........
.........******.........
..........****..........
.........******.........
........********........
.......****..****.......
......****....****......
.....****......****.....
....****........****....
...****..........****...
..****............****..
.****..............****.
****................****
解题
方法一:模拟 字符串
思路
找规律模拟。
代码
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
StreamTokenizer in = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
in.nextToken();
int m = (int) in.nval;
in.nextToken();
int n = (int) in.nval;
int col = m + n - 1;
int offset = 0;
StringBuilder ans = new StringBuilder();
for (int i = 0; i < n; ++i) {
for (int j = 0; j < col; ++j) {
ans.append(j >= offset && j < offset + m ||
j >= col - offset - m && j < col - offset ? "*" : ".");
}
if (i < n / 2) ++offset;
else --offset;
ans.append("\n");
}
System.out.print(ans);
}
}
评论区