Java 1027 打印沙漏
输入格式:
输入在一行给出 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 优化版):
================
评论