原题描述
思路分析
- 对于输入的
n=1
,和n<7
可单独处理。- 对于
n>=7
,用字符串数组s[100]
来存储每一行的字符串。从第三个
字符开始存储。- 用
len
表示为从第一层(三个字符)到最高层一共有几行。s数组存储每一行的字符串。比如s[0]="***", s[1]="*****"
- 根据逐行递增两个字符串,可知最高层一共有
2*len+1
个字符,那么整个沙漏一共有2*{len*[3+(2*len+1)]/2}+1 = len*(2*len+4)+1
个字符串被使用。- 注意输出格式,用
cnt
来统计每一层的空格数量,具体实现请看代码。
代码
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n, sum = 1, j = 1, flag = 0, len = 0;
string c;
cin >> n >> c