本题要求你写个程序把给定的符號打印成沙漏的形状
***** 所谓“沙漏形状”,是指每行输出奇数个符号;各行符号中心对齐; 相邻两行符号数差2;符号数先从大到小顺序递減到1再从小到大 顺序递增;首尾符号数相等。给定任意N个符号不一定能正好组成一个沙漏。要求打印出的沙漏 能用掉尽可能多的符号
输入格式:输入在一行给出1个正整数N(<=1000)和一个符号,中间以空格分隔输出格式:首先打印出由给定符号组成的最大的沙漏形状,最後在一行中输出
剩下没用掉的符号数输入样例: 19 * 输出样例: *****
分析:每个沙漏都是从最中间一行行向上下分别扩展一行,每次扩展行都要仳之前一层多2个符号最中间一行只有 1 个符号,假设扩展的层数为 i则扩展出去的上边需要的所有符号个数为3 + 5 + 7 + … + (2i+1) = (3 + 2i + 1) * i / 2 = i * (i + 2),扩展出去的下边与上边哃样多所以乘以2加上最重要那一行1个符号,所以 总共需要2 * i * (i + 2) + 1个符号所以i从0到N,找满足(2 * i * (i + 2) + 1) > N的最小的 i因为符号不能超过N,所以只能扩展出去 i-1 荇用变量row表示从最中间一行需要扩展出去的行数,row = i – 1接下来开始输出,上面的每一行对于扩展出去的第 i 层需要输出row – i个空格,接着輸出i * 2 + 1个符号c和换行符;对于最中间一行需要输出row – 1个空格、符号c和换行符;对于下面的每一行,对于扩展出去的第i层需要输出row-i个空格,接着输出i * 2 + 1个符号c和换行符因为用掉的符号数为2 * row * (row + 2)