AcWing
  • 首页
  • 活动
  • 题库
  • 竞赛
  • 应用
  • 更多
    • 题解
    • 分享
    • 商店
    • 问答
    • 吐槽
  • App
  • 登录/注册

AcWing 3169. 等腰三角形    原题链接    简单

作者: 作者的头像   静静在Coding ,  2023-01-18 21:14:13 ,  所有人可见 ,  阅读 38


0


模拟

  1. 将每个数字存入一个字符串
  2. 找规律填入每个数字(每次填入一个宽度)
#include <bits/stdc++.h>
#include <climits>
#include <string>
using namespace std;
const int N = 1010;
char g[N][N];
void slove(int n)
{
    memset(g, 0, sizeof g);
    string s = "";
    int sz = 4 * n - 4;
    for (int i = 1;; i++) {
        if (s.size() >= sz)
            break;
        s += to_string(i);
    }
    cout << s << endl;


    int cnt = 0;
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= n + i - 1; j++) {
            g[i][j] = '.'; // 填入每一个'.'
        }
        g[i][n - i + 1] = s[cnt++];//左边的腰
    }

    for (int i = 2; i <= 2 * n - 1; i++) //底
        g[n][i] = s[cnt++];

    for (int i = n - 1, j = 2 * n - 2; i >= 2; i--, j--)
        g[i][j] = s[cnt++];//右边的腰

    for (int i = 1; i <= n; i++) {
        printf("%s\n", g[i] + 1);
    }
}
int main()
{
    int n;
    while (cin >> n) {
        slove(n);
    }
    return 0;
}

0 评论

你确定删除吗?
1024
x

© 2018-2023 AcWing 版权所有  |  京ICP备17053197号-1
用户协议  |  隐私政策  |  常见问题  |  联系我们
AcWing
请输入登录信息
更多登录方式: 微信图标 qq图标
请输入绑定的邮箱地址
请输入注册信息