侧边栏壁纸
博主头像
GabrielxD

列車は必ず次の駅へ。では舞台は?私たちは?

  • 累计撰写 471 篇文章
  • 累计创建 108 个标签
  • 累计收到 9 条评论

目 录CONTENT

文章目录

【模拟, 字符串】打印大X【蓝桥杯】

GabrielxD
2022-09-18 / 0 评论 / 0 点赞 / 20 阅读 / 371 字 / 正在检测是否收录...

题目

试题 历届真题 打印大X【第六届】【省赛】【C组】

3154. 打印大X


小明希望用星号拼凑,打印出一个大 X,他要求能够控制笔画的宽度和整个字的高度。

为了便于比对空格,所有的空白位置都以句点符来代替。

现在给定笔画的宽度和字的高度,请你将大 X 打印出来。

具体形式可参照下面样例。

输入格式

包含两个整数 m,nm,n,表示笔的宽度以及 X 的高度。

输出格式

参照样例形式,输出大 X。

数据范围

0<m<n0 < m < n,
3<n<10003 < n < 1000,
nn 保证是一个奇数。

输入样例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);
    }
}
0

评论区