1038 打印图案
时间限制:1000MS 代码长度限制:10KB
提交次数:4316 通过次数:2828
题型: 编程题 语言: G++;GCC
Description
由键盘输入正数n(n<10),要求输出如下中间数字为n的菱形图案。
输出格式
菱形右边不留多余空格
输入样例
4
输出样例
1 121 12321 1234321 12321 121 1
耗时两个小时左右,一开始胡乱敲了一通,反复改着不明所以的变量。以为做出来了,结果发现不知道为什么左边多出了空格。
果断放弃,第二天理了一下思路,很快就做出来了。
这一类题思路一定要清晰,我的想法是先打印出一个平躺的房屋型,然后用if选择那些要输出,哪些填空格。
我分析了数字关系,发现可以利用行和列大小之间的关系。
我让行i:12345=h:12321,j:12345=hh:12321=H:32123。只要当h>=H的时候输出就可以了
打印数字的时候,我一开始是想h*hh/n,后来发现边缘数处理不了。
就让菱形正中间当坐标原点,计算离原点的距离,结果通过了。
下面是我的代码:
#include<stdio.h>
#include<math.h>
int main()
{
int i, j,H,h,n,hh,N;
scanf_s("%d", &N);
n = N - 1;