算法題型的個人練習_01

題目  算法實現,輸入一個正整數n,打印2*n行,如當輸入n=4時,輸出

1

2*3

4*5*6

7*8*9*10

7*8*9*10

4*5*6

2*3

1

個人認爲這道題的難點在於下半部分的數字記錄。在實現方面有很多種方法,其中一種方法是在一個for循環裏面分兩個小循環,一個打印上半部分,一個打印下半部分,作爲判斷條件就是當循環到第n次時,n次以前的就執行上半部分的循環,n次以後就執行下半部分的循環。

<span style="white-space:pre">				</span>for(int j = 0; j < 2*i+1; j++){					
					if(j != 0 && j % 2 != 0){
						System.out.print("*");
					}else {
						System.out.print(k);
						k++;
					}
				}
				System.out.println("");
上半部分的實現,其中判斷是否輸出*時,當j爲奇數時輸出,k是作爲輸出數,每輸出一個便加1.


<span style="white-space:pre">				</span>k = k - 1;
				b = k - (n - a) ;
				k = b;

				for(int j = 0; j < ((2*n-1)-(i-n)*2); j++){
					
					if(j != 0 && j % 2 != 0){
						System.out.print("*");
					}else {
						System.out.print(b);
						b++;
					}
				}
				a++; 
				System.out.println("");

下半部分的實現。下半部分要考慮的是輸出的位數要和上半部分相對應,且數字也要對應。其中對輸出位數的計算爲(2*n-1)-(i-n)*2,(2*n-1)是上半部分最後一行輸出的位數,然後減去一個等差得出需要輸出的位數。對於輸出數的計算,我先定義一個新的變量a,它隨着小循環結束加1。k=k-1是因爲上半部分結束時k任然加1,所以要先減去1得到上半部分輸出的最後一個數字。b = k - (n - a) 這句主要作用是得到每一行開頭的數字,方便輸出,最後k=b的作用是記錄上一行的第一個數字。

 

public class Algorithm {

	public void test(int n){
		int k = 1;//上半部分輸出大小及下半部分的記錄
		int a = 1;//下半部分涉及到的算法
		int b = 0;//下半部分輸出數字大小
		for(int i = 0; i < 2*n; i++){
			if (i < n){
				
				for(int j = 0; j < 2*i+1; j++){					
					if(j != 0 && j % 2 != 0){
						System.out.print("*");
					}else {
						System.out.print(k);
						k++;
					}
				}
				System.out.println("");
			}else {

				k = k - 1;
				b = k - (n - a) ;
				k = b;

				for(int j = 0; j < ((2*n-1)-(i-n)*2); j++){
					
					if(j != 0 && j % 2 != 0){
						System.out.print("*");
					}else {
						System.out.print(b);
						b++;
					}
				}
				a++; 
				System.out.println("");
			}
		}
	}
	
	public static void main(String[] args){
		
		Algorithm a = new Algorithm();
		Scanner s = new Scanner(System.in);
		int n = s.nextInt();
		a.test(n);
	}
}

完全代碼


5
1
2*3
4*5*6
7*8*9*10
11*12*13*14*15
11*12*13*14*15
7*8*9*10
4*5*6
2*3
1

當輸入5時得到的輸出。

發佈了28 篇原創文章 · 獲贊 3 · 訪問量 7899
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章