PTA:L1-002 列印沙漏 (java)
阿新 • • 發佈:2018-12-14
package PTA; import java.util.Scanner; /* L1-002 列印沙漏 (20 分) 本題要求你寫個程式把給定的符號列印成沙漏的形狀。例如給定17個“*”,要求按下列格式列印 ***** *** * *** ***** 所謂“沙漏形狀”,是指每行輸出奇數個符號;各行符號中心對齊;相鄰兩行符號數差2;符號數先從大到小順序遞減到1,再從小到大順序遞增;首尾符號數相等。 給定任意N個符號,不一定能正好組成一個沙漏。要求打印出的沙漏能用掉儘可能多的符號。 輸入格式: 輸入在一行給出1個正整數N(≤1000)和一個符號,中間以空格分隔。 輸出格式: 首先打印出由給定符號組成的最大的沙漏形狀,最後在一行中輸出剩下沒用掉的符號數。 輸入樣例: 19 * 輸出樣例: ***** *** * *** ***** 2 */ public class L1_002Shalou { public static void main(String[] args) { Scanner sc=new Scanner(System.in); int n=sc.nextInt(); String x=sc.next(); /*if (n<7){ System.out.println(x); return; } if (n<17)*/ //s存放總個數* int s=1; //r存放次數 int r=1; while (s<=n){ s+=(2*(2*r+1)); r++; } // System.out.println(2*(r-2)+1); int sy=n-(s-2*(2*(r-1)+1)); int d=r-2; // System.out.println(d+1); char[][] ss=new char[d+1][2*(r-2)+1]; for (int i = 0; i <ss.length ; i++) { for (int j = 0; j <ss[0].length ; j++) { if (j>ss[0].length-1-i)continue; if (j>=i){ System.out.print(x); }else { System.out.print(" "); } } System.out.println(); } for (int i = ss.length-2; i >=0 ; i--) { for (int j = 0; j <ss[0].length ; j++) { if (j>ss[0].length-1-i)continue; if (j>=i){ System.out.print(x); }else { System.out.print(" "); } } System.out.println(); } System.out.println(sy); } }