AcWing 727. 菱形
原题链接
简单
作者:
小张同学
,
2020-02-19 16:25:06
,
所有人可见
,
阅读 12195
y总优雅做法
别着急做题!先去找图形特点!这其实是个正方形!
abs(sx - i) + abs(sy - j) <= n / 2
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int n;
cin >> n;
int sx = n / 2, sy = n / 2;
for (int i = 0; i < n ; i ++ )
{
for (int j = 0; j < n; j ++ )
{
if ( abs(sx - i) + abs(sy - j) <= n / 2 ) cout << "*";
else cout << " ";
}
cout << endl;
}
return 0;
}
第三次做法(依旧是陆同学的想法) 可以把上下三角形合并,直接出菱形
int x = n / 2;
for (int i = -x; i <= x; i ++ )
{
for (int j = 0; j < abs(i); j ++ ) cout <<' ';
for (int j = 0; j < n - abs(i) * 2; j ++ ) cout << '*';
puts("");
}
第二次做法(陆同学的想法) 去找行号 和 空格&星号 的关系,输出上下三角形
int x = n / 2;
for (int i = 0; i < x; i ++)
{
for (int j = 0; j < x - i; j ++ ) cout <<' ';
for (int j = 0; j < 2 * i + 1; j ++ ) cout << '*';
puts("");
}
for (int i = 0; i < n - x; i ++ )
{
for (int j = 0; j < i; j ++ ) cout << ' ';
for (int j = 0; j < n - 2 * i; j ++ ) cout << '*';
puts("");
}
个人第一次做法,想老半天,我简直蠢到家了
#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
int n;
cin >> n;
int x = n / 2;
char s[n][n];
// 输入空格
for (int i = 0; i < n; i ++ )
for (int j = 0; j < n; j ++ )
s[i][j] = ' ' ;
// 上半部分
for (int i = 0; i < x; i ++ )
for (int j = x - i; j <= x + i; j ++ )
s[i][j] = '*';
// 中间一行
for (int j = 0; j < n; j ++ )
s[x][j] = '*';
// 下半部分
for (int i = x + 1; i < n; i ++ )
for (int j = i - x; j < n - i + x; j ++ )
s[i][j] = '*';
// 输出
for (int i = 0; i < n; i ++ )
{
for (int j = 0; j < n; j ++ )
cout << s[i][j] ;
cout << endl;
}
return 0;
}
### *管够,不够再加
第三种tql,人的差距为啥这么大。
想了半天,好像星号右边的空格不用输出哈
感觉第三种比较好
想不明白哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇
abs??
大受震撼
我第一次和宁的代码一模一样
曼哈顿距离
推公式都不管用,直接用两个变量表示空格和‘*’的个数不就行了???
聪明
n/2是啥意思啊
菱形的中心点,也是边界和中心点的绝对距离
%%%
第一种朴素~
这都是怎么想到的:),人与人之间智商差距竟然如此吓人。。。。
y总tql
为何这么强。。。
我第一次写也是跟你一样 分3部分 哭了
给老铁点赞,老铁666
牛牛牛
同学,你很厉害!