网页制作中网站名称怎么做,微平台推广是什么,青浦网站建设 迎鑫,南宁市公共资源交易网题目#xff1a;本题目要求你在控制台输出一个由数字组成的等腰三角形。具体的步骤是#xff1a;1. 先用1,2,3#xff0c;...的自然数拼一个足够长的串2. 用这个串填充三角形的三条边。从上方顶点开始#xff0c;逆时针填充。比如#xff0c;当三角形高度是8时#xff1a…题目本题目要求你在控制台输出一个由数字组成的等腰三角形。具体的步骤是1. 先用1,2,3...的自然数拼一个足够长的串2. 用这个串填充三角形的三条边。从上方顶点开始逆时针填充。比如当三角形高度是8时 1 2 1 3 8 4 1 5 7 6 1 7 6891011121314151输入一个正整数n(3n300),表示三角形的高度输出用数字填充的等腰三角形。为了便于测评我们要求空格一律用.代替。例如输入5程序应该输出....1...2.1..3...2.4.....1567891011再例如输入10程序应该输出.........1........2.2.......3...2......4.....2.....5.......1....6.........2...7...........0..8.............2.9...............91011121314151617181再例如输入15程序应该输出..............1.............2.3............3...2...........4.....3..........5.......1.........6.........3........7...........0.......8.............3......9...............9.....1.................2....0...................8...1.....................2..1.......................7.1.........................221314151617181920212223242526资源约定峰值内存消耗含虚拟机 256MCPU消耗 1000ms分析1 首先我们先把所有需要打印的数字按照顺序储存起来等腰三角形的底边等于2乘腰-1根据这个我们就可以用4n-4来表示所有需要打印的数字。2 从1开始到99999一直往string字符串中加入数字只要字符串长度大于4n-4就立即停止。3两层循环第一层控制行数第二层控制每行的总数量通过观察我们发现左边的腰每次都向左移动那么直接从一开始的值每次都减去控制行数的i只要j等于h(1一开始对应的位置)-i-1那么直接顺序输出字符串中的数字右边腰同理。其他情况全都打印.4最下面一行打印的是从第i项目到count-i1步骤package 历届真题省赛阶段;import java.util.Scanner;public class 测试1 {public static void main(String[] args) {int h 15;// 高度int count 4 * h - 4;// 需要的数字总数量String str ;// 用于储存数字int k 0;// 索引表用来记录数字的使用for (int i 1; i 999999; i) {if (str.length() count) {//只要字符串长度大于需要的总数量那么就结束要不就继续进行从1进行累加break;} else {str i;}}for (int i 0; i h; i) {//外层控制行数for (int j 0; j h i; j) {//内层控制每行的数量if (i h - 1) {//当最后一行的时候直接进行字符串截取System.out.print(str.substring(k, count - i 1));break;} else if (j h - i - 1) {//左边的腰每次都向左移动那么直接从一开始的值每次都减去控制行数的iSystem.out.print(str.charAt(k));//通过每次自增的索引来打印str正常顺序} else if (j h i - 1) {//右边的腰每次都向右移动那么直接从一开始的值每次都减去控制行数的iSystem.out.print(str.charAt(count - i));} else {System.out.print(.);}}System.out.println();}}
}