Java 團體程式設計天梯賽-練習集-列印沙漏
阿新 • • 發佈:2018-11-04
本題要求你寫個程式把給定的符號列印成沙漏的形狀。例如給定17個“*”,要求按下列格式列印
*****
***
*
***
*****
所謂“沙漏形狀”,是指每行輸出奇數個符號;各行符號中心對齊;相鄰兩行符號數差2;符號數先從大到小順序遞減到1,再從小到大順序遞增;首尾符號數相等。
給定任意N個符號,不一定能正好組成一個沙漏。要求打印出的沙漏能用掉儘可能多的符號。
輸入格式:
輸入在一行給出1個正整數N(≤1000)和一個符號,中間以空格分隔。
輸出格式:
首先打印出由給定符號組成的最大的沙漏形狀,最後在一行中輸出剩下沒用掉的符號數。
輸入樣例:
19 *
輸出樣例:
*****
***
*
***
*****
2
import java.util.Scanner; public class Main{ static void print(String a,int count) { for(int i=1;i<=count;i++) { System.out.print(a); } } public static void main(String[] args2) { Scanner scan=new Scanner(System.in); int o=1,tmp=0,sum=0,line,i; String[] buf=scan.nextLine().split(" "); i=Integer.parseInt(buf[0]); do { o+=2; tmp+=o; }while(i>2*tmp); int used=tmp-o; tmp=used; line=(o-1)/2-1; int n=0; while(tmp!=0) { print(" ",n++); print(buf[1],(line+1)*2-1); tmp-=(line--+1)*2-1; System.out.println(); } print(" ",n--); print(buf[1],1); System.out.println(); tmp+=(line+++1)*2+1; while(n>=0) { print(" ",n--); print(buf[1],(line+1)*2-1); tmp+=(line+++1)*2+1; System.out.println(); } System.out.print(i-used*2-1); } }