打 印 菱 形
本题要求你写个程序打印成菱形的形状。例如给定17个符号,要求按下列格式打印
*
***
*****
***
*
所谓“菱形形状”,是指每行输出奇数个符号;各行符号中心对齐;相邻两行符号数差2;符号数从1开始先从小到大顺序递增,再从大到小递减到1;首尾符号数相等。
给定任意N个符号,不一定能正好组成一个菱形。要求打印出的菱形能用掉尽可能多的符号。
输入格式:
输入在一行给出1个正整数N(≤107)。
输出格式:
首先打印出由给定符号组成的最大的菱形形状,最后在一行中输出剩下没用掉的符号数。
输入样例:
14
输出样例:
*
***
*****
***
*
1
代码长度限制
16 KB
时间限制
800 ms
内存限制
64 MB
栈限制
8192 KB
我的思路:
其实这种题全是找规律,慢慢找,最好找张纸写一写,上代码:
我的代码:
#include<iostream>
using namespace std;
int main(){
int i = 0;
int n;
cin>>n;
int sum = 1;
int cnt = -2;
while(sum + 2*i <= n){
sum+= 2*i;
cnt+=2;
i+=2;
}
cnt /= 2;
for(int i = -cnt;i <= cnt;i++){
for(int j = 0;j < abs(i);j++){
printf(" ");
}
for(int j = 0;j < 2*(cnt - abs(i))+1;j++){
printf("*");
}
putchar('\n');
}
printf("%d",n - sum);
return 0;
}
/*
*
***
*****
***
*
1
*/
到这里就结束啦!!!
欢迎小伙伴们评论区讨论,提问。
我是荒古前,期待你的关注~~~
~~~完结撒花✌y( •̀ ω •́ )y✌~~~