PTA平台L1-002解题思路及完整代码
文章目录
- 一、题目
- 二、整体思路
- 三、完整代码
- 总结
一、题目
题目:本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定17个“*”,要求按下列格式打印:
************
*****
所谓“沙漏形状”,是指每行输出奇数个符号;各行符号中心对齐;相邻两行符号数差2;符号数先从大到小顺序递减到1,再从小到大顺序递增;首尾符号数相等。
给定任意N个符号,不一定能正好组成一个沙漏。要求打印出的沙漏能用掉尽可能多的符号。
二、整体思路
首先,求出打出的最大沙漏图形需要个数s(s 代码如下(示例): 本文的解决方法不是最优解,仅提出一种解题思路。三、完整代码
import java.util.Scanner;public class Main {public static void main(String[] args) {//分别输入数字和特殊符号Scanner sc = new Scanner(System.in);int n = sc.nextInt();String str = sc.next();//s,i出数值分别为1int s = 1,i=1;//判断条件:判断下一轮总数s是否会超过n,若超出,则不再进入循环while(n-((i+3)/2*(i+3)-1)>=0){i+=2;//s的值为(1+3+···+i)*2-1,此处用到等差数列求和公式s = (i+1)/2 * (1+i) -1;}//得到s,i的值后先倒叙输出,再正序输出//倒序,首行到中间行for(int j=1;j<=(i+1)/2;j++){//用k控制循环,j为行数for(int k=1;k
总结
菜狗本狗,纯属交流,如有问题,欢迎留言。
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
