写点什么

Java 1027 打印沙漏

  • 2022 年 5 月 04 日
  • 本文字数:631 字

    阅读完需:约 2 分钟

输入格式:

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

输出格式:

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

输入样例:

19 *


结尾无空行

《一线大厂 Java 面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》无偿开源 威信搜索公众号【编程进阶路】 出样例:










    2


    结尾无空行


    Java 代码实现(暴力解法,会超时,未优化):


    =======================


    import java.util.Scanner;


    public class Main {


    public static void main(String[] args) {


    Scanner sc = new Scanner(System.in);


    String[] str = sc.nextLine().split(" ");


    int n = Integer.parseInt(str[0]);


    int left;//剩下没用掉的符号数


    int hang;//上半行行数


    int i;


    if(n == 1){


    System.out.println(str[1]);


    System.out.print("0");


    }else


    for(i = 2;;i++){


    if(2ii-1 <= n && 2*(i+1)*(i+1)-2 > n){


    left = n - (2ii-1);


    hang = i;


    //上半部分


    for(int j = 0;j < hang;j++){


    for(int k = 0;k < j;k++){//打印每行空白数


    System.out.print(" ");


    }


    for(int t = 0;t < hang2-1-j2;t++){// 打印每行符号数


    System.out.print(str[1]);


    }


    System.out.print("\n");


    }


    //下半部分


    for(int j = 1;j < hang;j++){


    for(int k = 0;k < hang-j-1;k++){//打印每行空白数


    System.out.print(" ");


    }


    for(int t = 0;t <j*2+1 ;t++){// 打印每行符号数


    System.out.print(str[1]);


    }


    System.out.print("\n");


    }


    System.out.print(left);


    break;


    }


    }


    }


    }


    Java 代码实现(AC 优化版):


    ================

    用户头像

    还未添加个人签名 2022.04.13 加入

    还未添加个人简介

    评论

    发布
    暂无评论
    Java 1027 打印沙漏_Java_爱好编程进阶_InfoQ写作社区