https://pintia.cn/problem-sets/994805046380707840/problems/994805145370476544
*****
***没空格
*没空格
***没空格
*****
坑:输出图形后面没有空格,只是前面有空格。
#include <iostream>
#include <algorithm>
#include <map>
using namespace std;
int main() {
int n;
int sum = 0;
int cnt = 1;
char sign;
cin >> n >> sign;
if (n < 1)
{
cout << 0;
return 0;
}
while ((sum + (cnt + 2)) * 2 + 1 < n)
{
cnt += 2;
sum += cnt;
}
// 正向输出,包含单独的一个
for (int i = cnt; i >= 1; i-=2)
{
for (size_t j = 0; j < (cnt - i) / 2; j++)
{
cout << " ";
}
for (size_t j = 0; j < i; j++)
{
cout << sign;
}
cout << endl;
}
// 反向输出,不包含中间那一个
for (int i = 3; i <= cnt; i+=2)
{
for (size_t j = 0; j < (cnt - i) / 2; j++)
{
cout << " ";
}
for (size_t j = 0; j < i; j++)
{
cout << sign;
}
cout << endl;
}
cout << n - (sum * 2 + 1);
return 0;
}