沙漏问题_沙漏,问题-程序员宅基地

技术标签: PAT  

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

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

所谓“沙漏形状”,是指每行输出奇数个符号;各行符号中心对齐;相邻两行符号数差2;符号数先从大到小顺序递减到1,再从小到大顺序递增;首尾符号数相等。

给定任意N个符号,不一定能正好组成一个沙漏。要求打印出的沙漏能用掉尽可能多的符号。

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

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

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

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

思路:
1.通过观察题干,图案每行最大的符号数等于行数;确定行数和列数;
2.输出字符前你需要要注意空格。
代码演示:

package 练习;

import java.util.Scanner;

public class 沙漏问题 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		int Row=1,R=0,N,sum=0;
		Scanner str = new Scanner(System.in);
		N = str.nextInt();
		String ch = str.next();
		//确定行数和列数
		for(int i=3;;i+=2) {
			sum+=i;
			if(sum*2+1>=N) {
				if(sum*2+1>N) {
					sum-=i;
					i-=2;
				}
				Row=i;
				R = N-(sum*2+1);
				break;
			}
		}
		
		int cntch = Row,cntsp=0;   //定义字符数,初始化为行数,空格数,初始化为0
		for(int i=1;i<=Row;i++)
		{
			for(int j=1;j<=cntsp;j++)
				System.out.print(' ');
			for(int j=1;j<=cntch;j++)
				System.out.print(ch);
			if(i<=(Row-1)/2+1){
				cntsp+=1;
				cntch-=2;
			  }else{
					cntsp-=1;
					cntch+=2;
				}
			if(cntch==-1)//若输出字符数即将重新从3开始,则当前的字符数为-1 
			{
				cntch+=4;
				cntsp-=2;//更新字符数和空格数,下一行输出3个字符和1个空格 
			}
			System.out.println(); //注意输出换行符 
		}
	
		System.out.println(R);
		
	}

}

结果展示:
在这里插入图片描述
具体代码流程可以通过调试体现,以上仅供参考。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/TONGZONGE/article/details/102913739

智能推荐

Python代码写好了怎么运行?_python代码怎么运行-程序员宅基地

文章浏览阅读970次,点赞18次,收藏22次。Python代码写好了怎么运行?相信问这样问题的朋友一定是刚刚入门Python的初学者。本文就来为大家详细讲讲如何运行Python代码。一般来讲,运行Python代码的方式有两种,一是在Python交互式命令行下运行;另一种是使用文本编辑器,在命令行中直接运行。这两种方法各有优缺点,下面我们以hello world来举例,为大家打开Python学习的大门,现在就一起看看吧!

poj1144-程序员宅基地

文章浏览阅读67次。http://poj.org/problem?id=1144求图中割点数目,只是输入处理比较麻烦,由于不知道有多长,所以需要字符输入然后转换成数字 1 #include <stdio.h> 2 #include <string.h> 3 #define SIZE 101 4 #define MIN(a,b) ((a)<(b)?(a):(b)) 5 bool..._poj1144 import java.io

【智能优化算法】鹦鹉优化算法附matlab代码-程序员宅基地

文章浏览阅读654次,点赞7次,收藏11次。鹦鹉优化算法(PO)是一种基于自然界鹦鹉群体行为的智能优化算法。它模拟了鹦鹉在觅食过程中通过信息共享和协作来提高觅食效率的行为。PSO算法的主要特点包括:**种群初始化:**随机初始化一组候选解,称为种群。**适应度计算:**评估每个候选解的适应度,即目标函数的值。**信息共享:**每个鹦鹉与种群中其他鹦鹉共享其当前位置和最佳位置的信息。**速度更新:**根据共享的信息,每个鹦鹉更新其速度,朝着更高适应度的区域移动。**位置更新:**根据更新的速度,每个鹦鹉更新其位置,探索新的候选解。

【车间调度】基于灰狼算法GWO求解置换流水车间调度问题PFSP含Matlab代码-程序员宅基地

文章浏览阅读19次。车间调度是生产管理中的重要环节,它涉及到如何合理安排生产任务和资源,以提高生产效率和降低成本。在车间调度中,置换流水车间调度问题(Permutation Flowshop Scheduling Problem,简称PFSP)是一种经典且复杂的调度问题。为了解决PFSP问题,研究人员提出了许多优化算法,其中灰狼算法(Grey Wolf Optimization,简称GWO)是一种被广泛应用的方法。灰狼算法是一种基于自然界中灰狼群体行为的优化算法。

HTML电子邮件的邮件格式_使得输入的数据为邮箱在html的格式是什么-程序员宅基地

文章浏览阅读4.7k次。电子邮件电子邮件发展至今,已经有几十年历史,仍然是很多人作为沟通、营销和通知的主要工具,特别是职场上。那么我们在编写一封邮件时,需要注意的邮件格式有哪些?邮件格式,其中包含很多学问:不同种类(纯文本类和HTML类)的邮件格式注意事项差别甚大。同一种类不同类型(通知、商务、书信等)的邮件格式事项不尽相同。统一类型不同场景也存在微妙的差别。所以我在这里只是概括个大概,不能一一详细说明。HT..._使得输入的数据为邮箱在html的格式是什么

【懒人系列】快手获取当前播放视频时长_kwai://work/5205035343338955636?source=bottom_reco-程序员宅基地

文章浏览阅读4k次。文章目录前言实现方法总结前言 上一篇文章我们留了个不大不小的问题:如何获取当前播放视频时长,进而视频播放完毕后自动翻页?现在我们通过快手极速版App进行探讨和实现。 众所周知,Android播放视频依赖播放组件类,而播放组件会有一些通用方法,比如开始、暂停、循环播放、设置播放位置、获取视频播放进度等,如果我们能Hook这些方法,就会获取当前播放组件的实例,通过实例再获取当前视频的时长。实现方法继续使用Frida神器,启动快手极速版的命令如下:frida -U -f com._kwai://work/5205035343338955636?source=bottom_recommend&enableslideplay=

随便推点

基于javaweb的在线小说阅读系统(读者+作者+管理员)(java+ssm+jsp+mysql)_基于java web的在线阅读课程设计与实现-程序员宅基地

文章浏览阅读839次。基于javaweb的在线小说阅读系统(读者+作者+管理员)(java+ssm+jsp+mysql)运行环境Java≥8、MySQL≥5.7、Tomcat≥8开发工具eclipse/idea/myeclipse/sts等均可配置运行适用课程设计,大作业,毕业设计,项目练习,学习演示等功能说明![20220519002739](https://pic1.imgdb.cn/files/52560/project20/20220519002739.jpg)_基于java web的在线阅读课程设计与实现

VMware Centos7 安装Mysql、Node、NVM、Nginx等_centos nvm-程序员宅基地

文章浏览阅读1.6k次,点赞2次,收藏13次。为啥选择Mysql而不选择Oracle。MySQL一个关系数据库管理系统。中小型数据库。而Oracle是一个对象关系数据库管理系统,它属于大型数据库。其次Mysql的话体积小、速度快、维护成本低,重点它是开源免费的。所以各方面对于我们学习而言Mysql简直不要太贴合,对于前端开发人员来说,会执行sql脚本,会一些基本的CRUD(增加(Create)、读取(Read)、更新(Update)和删除(Delete))语法就差不多了。后面会继续更新后面会继续更新我是Etc.End。_centos nvm

GCC编译过程_在gcc的目录下不能编译-程序员宅基地

文章浏览阅读2.7k次,点赞3次,收藏30次。1. GCC定义目前 Linux 下最常用的 C 语言编译器是 GCC ( GNU Compiler Collection ),它是 GNU 项目中符合 ANSI C 标准的编译系统,能够编译用 C 、 C++ 和 Object C 等语言编写的程序。 GCC 不仅功能非常强大,结构也异常灵活。最值得称道的一点就是它可以通过不同的前端模块来支持各种语言,如Java 、 Fortran 、 Pas..._在gcc的目录下不能编译

接口调用-【3】讯飞离线命令词识别Windows/Linux_java调用讯飞离线版语音识别 linux-程序员宅基地

文章浏览阅读1k次,点赞3次,收藏4次。1、离线命令词识别调用主函数package com.iflytek;import com.iflytek.util.Step2_asr_thread;import com.iflytek.util.Step3_audioFormat;import java.util.Scanner;import javax.sound.sampled.AudioFormat;import javax.sound.sampled.AudioSystem;import javax.sound.sampled._java调用讯飞离线版语音识别 linux

关于BIOS的那些事----不要老整三岁的脑筋急转弯,咱们来整点五岁的(中)_整点五岁以下的-程序员宅基地

文章浏览阅读1.8k次。 现在来看第二部分,第二部分其实是把要用的模块文件压缩了一个接一个放在一起就行了。压缩算法的名字叫lh5,一提到算法,国内研究这种“低层次”东西的人就少了(大家都搞往窗体上拖放几个控件就能实现功能的高层次的应用程序)。好在我在国外的网站上无意中发现了lh5压缩算法的源码,用TC写的,我又从网上把TC这个老古董下载下来,最后居然编译成功了(当然做过一些修改),编译生成的文件名叫ar.exe(文中_整点五岁以下的

微信小程序 uniapp+vue课程教学在线学习考试系统-程序员宅基地

文章浏览阅读574次,点赞21次,收藏12次。本在线学习系统使用的框架为开源框架,在开发部署上具有一定的优势,可以帮助程序开发者快速构建基本的程序框架出来,通过调用开源框架可以减少程序开发者编写的代码量,从而提升在线学习系统的安全性和稳定性,这有益于程序开发者完成功能模块的处理和数据调用。本文设计目标为设计在线学习系统,在线学习系统是一种创新的系统,创新点包含了系统框架进行结合,在仔细研究了前后端开源框架之后,最后选择使用开源框架SpringBoot,且在开源框架的基础上实现了在线学习系统。(1)确定项目名称、项目研究内容,开题报告提交及修改。

推荐文章

热门文章

相关标签