2361788963


私信TA

用户名:2361788963

访问量:2293

签 名:

等  级
排  名 8344
经  验 1180
参赛次数 0
文章发表 16
年  龄 0
在职情况 学生
学  校 广州软件学院
专  业

  自我简介:

TA的其他文章

解题思路:注意到图案上下对称,左右对称,我们可以求出x的中心点ci,cj;然后根据对称关系,将i,j的值全部转化为左上角的范围之内

注意事项:ci是整数,但是cj可能不是整数,因为当X宽度为偶数时,cj是小数

参考代码:

#include<bits/stdc++.h>

using namespace std;

int m, n, ci;

double cj;

int draw(int i, int j) {

if (i > ci) i = 2 * ci - i; //上下对称

if (j > cj) j = 2 * cj - j; //左右对称

if (j >= i && j <= i + m - 1) return 1;

return 0;

}

int main() {

ios::sync_with_stdio(false);

cin >> m >> n;

ci = n / 2 + 1; //i的中心点

cj = ci - 1 + 1.0 * (m + 1) / 2; //j的中心点,注意j的中心点可能不是整数

for (int i = 1; i < 2*ci; i++)

{

for (int j = 1; j < 2*cj; j++)

{

if (draw(i, j)) cout << "*";

else cout << ".";

}

cout << endl;

}

return 0;

}


 

0.0分

1 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区