立志用更少的代码做更高效的表达


PAT乙级最优题解——>传送门


本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定17个“*”,要求按下列格式打印

************
*****

所谓“沙漏形状”,是指每行输出奇数个符号;各行符号中心对齐;相邻两行符号数差2;符号数先从大到小顺序递减到1,再从小到大顺序递增;首尾符号数相等。 给定任意N个符号,不一定能正好组成一个沙漏。要求打印出的沙漏能用掉尽可能多的符号。

输入格式:
输入在一行给出1个正整数N(≤1000)和一个符号,中间以空格分隔。

输出格式:
首先打印出由给定符号组成的最大的沙漏形状,最后在一行中输出剩下没用掉的符号数。

输入样例:
19 *
输出样例:

************
*****
2

解题思路:

1、将图形分成三部分, 上部分, 中间一行, 下部分。

2、利用循环求出星号最多的一行星号个数, 然后-2循环, 分别遍历上下两部分, 补充中间部分即可。


注意:

1、每行*后面是没有空格的, 如第三行是:空格空格*,而不是:空格空格*空格空格

2、由于上下两部分代码是对称的, 因此可以采用函数复用的方式, 用一段代码来表示。 通过传递参数的不同来实现不同部分。 具体见代码。


代码展示

#include<bits/stdc++.h>
using namespace std;char c;
int n, num = 1, num1;   void Operation(bool flag) {        //输出上下部分, 通过flag控制num1 = num;for(int i = 3; i <= num; i+=2) {int len = (num-num1)/2;for(int j = 0; j < len; j++) cout << ' ';for(int j = 0; j < num1; j++) cout << c;flag?num1-=2:num1+=2;cout << '\n';}
}int main() {cin>>n>>c; n-=1;for(int i = 3; ; i+=2) {   //计算出num(最多*的一行有多少*) if(n - i*2 < 0) { num = i-2; break; }n -= i*2;      //n是剩余的个数 }Operation(true);//上半部分 for(int i = 0; i < (num-num1)/2; i++) cout << ' ';  //输出中间一行 cout << c << '\n';num1+=2;Operation(false);//下半部分 cout << n;
return 0; }

每日一句

你不勇敢,没人替你勇敢。

1027 打印沙漏 (20分)——27行代码AC(结构清晰)相关推荐

  1. C++学习之路 | PTA乙级—— 1027 打印沙漏 (20 分)(精简)

    1027 打印沙漏 (20 分) 本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个"*",要求按下列格式打印 所谓"沙漏形状",是指每行输出奇数个 ...

  2. PTA练习题1027 打印沙漏 (20分)

    1027 打印沙漏 (20分) 本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个"*",要求按下列格式打印 所谓"沙漏形状",是指每行输出奇数个符 ...

  3. 1027 打印沙漏 (20 分)

    1027 打印沙漏 (20 分) 本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个"*",要求按下列格式打印 所谓"沙漏形状",是指每行输出奇数个 ...

  4. 1081 Rational Sum (20 分)_22行代码AC

    立志用最少的代码做最高效的表达 PAT甲级最优题解-->传送门 Given N rational numbers in the form numerator/denominator, you a ...

  5. PTA乙级 1027 打印沙漏——20分

    本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个"*",要求按下列格式打印 ************ ***** 所谓"沙漏形状",是指每行输出奇 ...

  6. 1027 打印沙漏 (20分)

    本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个"*",要求按下列格式打印 所谓"沙漏形状",是指每行输出奇数个符号:各行符号中心对齐:相邻两行符 ...

  7. 【PAT乙级】1027 打印沙漏 (20 分)

    题目地址 #include<cstdio> #include<iostream> using namespace std; int main(void) {int n; cha ...

  8. 1027 Colors in Mars (20 分)_20行代码AC

    立志用最少的代码做最高效的表达 PAT甲级最优题解-->传送门 People in Mars represent the colors in their computers in a simil ...

  9. 1094 谷歌的招聘 (20分)_25行代码AC

    立志用最少的代码做更高效的表达 PAT乙级最优题解-->传送门 2004 年 7 月,谷歌在硅谷的 101 号公路边竖立了一块巨大的广告牌(如下图)用于招聘.内容超级简单,就是一个以 .com ...

最新文章

  1. 网络攻城狮怎么看待TCP/IP协议与UDP协议?
  2. 在Android Studio中进行代码混淆
  3. 数据库操作错误:删除对于用户'root':数据库主体在该数据库中拥有架构,无法删除...
  4. 极致无边界!2021 神策数据 Tech-Day 即将开幕
  5. 坚持做一件事情真的很不容易,首先必须要克服惰性!
  6. 【半译】在ASP.NET Core中创建内部使用作用域服务的Quartz.NET宿主服务
  7. 淮北计算机考试报名,淮北2019年12月计算机等级考试报名入口/注意事项
  8. iOS14.5 Beta7使用体验感受
  9. CentOS操作系统的22个log日志
  10. cnki账号 中国知网 免费 入口 用户名 密码 国内外学术刊物数据库账号
  11. 一位大牛对于写技术博客的一些建议
  12. 管理学论文对人性的假设
  13. Hypervisor
  14. 【deepin】安装与设置win10独立双系统 - 战神Z7-SL7S3安装deepin15.11,并双屏显示
  15. PHP推荐简单采集微博文章信息自用
  16. 国风就是帅,会三板吗,看看新天吧
  17. 推荐几款视频声音变声软件给大家
  18. 【引语收集计划】《启迪》 本雅明--导言-瓦尔特.本雅明 : 1892-1940 by汉娜.阿伦特
  19. 夜暗方显万颗星,灯明始见一缕尘
  20. python time localtime()

热门文章

  1. 浅谈权限管理的设计与实现
  2. 聊一聊Kafka分区的隐藏属性——二次归类
  3. 曹大:我的快速阅读法
  4. Go 超时引发大量 fin-wait2
  5. 刘歧:让人生不留遗憾
  6. shell写的彩色进度条
  7. 有意思的 Node.js 内存泄漏问题
  8. saltstack与ansible对比
  9. Git的基础知识和常用命令
  10. CoreOS安装到硬盘