1. 程式人生 > >英雄會-----楊輝三角-----楊輝三角的變形

英雄會-----楊輝三角-----楊輝三角的變形

楊輝三角

楊輝三角大家都熟悉,二項式n次方展開式的係數可排列成一個三角形的數表,成為楊輝三角。形似:

1

     1   1

  1   2   1

1  3   3  1

輸出楊輝三角的程式碼:

import java.util.*;
public class Yanghui{
	public static void main(String args[]){
		Scanner scan = new Scanner(System.in);
		int n = Integer.parseInt(scan.next());
		int mat[][] = new int[n][];
		//
		int i,j = 0;
		for(i=0;i<n;i++){
			mat[i] = new int[i+1];
			mat[i][0] = 1;
			mat[i][i] = 1;
			for(j = 1;j < i; j++){
				mat[i][j] = mat[i-1][j-1]+mat[i-1][j];
			}
		}
		for(i = 0;i < mat.length;i++){
			for(j = 0; j<n-i;j++){
				System.out.print(" ");
			}
			for(j = 0;j<mat[i].length;j++){
				System.out.print(mat[i][j]+" ");
			}
			System.out.println();
		}
	}
}

按照這個思路,就在龐果網做了一道“楊輝三角的變形"。

題目:

         1

     1   1  1

  1  2   3  2  1

1  3  6   7  6  3  1

以上三角形的數陣,第一行只有一個數1, 以下每行的每個數,是恰好是它上面的數,左上的數和右上數等3個數之和(如果不存在某個數,認為該數就是0)。

求第n行第一個偶數出現的位置。如果沒有偶數,則輸出-1。例如輸入3,則輸出2,輸入4則輸出3。

輸入n(n <= 1000000000)

開始的思路就是:將所有的數字都儲存到二維陣列中,然後在陣列的最後一行開始尋找第一個偶數。

程式碼如下

public class Test
{
	public static int run(int n)
	{
		int result = -1;
		int mat[][] = new int[n][];
		int i, j, k =0;
		for(i = 0;i < n;i++ ){
			mat[i] = new int[2*(i+1)-1];
			mat[i][0] = 1;
			for(j = 1; j< 2*(i+1)-1;j++){
				//left part
				if(j<=i){
					if(j-2<0){//針對第二列,第二列的元素沒有左上角
						if(j < mat[i-1].length){
							mat[i][j] = mat[i-1][j]+mat[i-1][j-1];
						}else{//針對第二行 1  1  1
							mat[i][j] = mat[i-1][j-1];
						}
					}else{
						mat[i][j] = mat[i-1][j]+mat[i-1][j-1]+mat[i-1][j-2];
					}
					k = j;
				}else{
				//right part
					mat[i][j] = mat[i][--k];
				}
				
			}
		}
		//search
		
		for(j = 0; j < mat[n-1].length;j++){
			if(mat[n-1][j]%2 == 0){
				result = j+1;
				break;
			}
		}
		return result;
	}
	
	public static void main(String []args)
	{
		System.out.println(run(1));
	}
}

但是提交之後發現超時了,

無奈修改了半天,還是超時,突然看到題目上有一個上線【1000000000】,才明白過來這樣把每個數字都求出來必然會超時。

    最後想了半天還是沒想起來好辦法。只好求助與強大的百度了。看到網友的答案之後才發下原來如此的簡單。

唉。思維一點都不活躍。只怪自己腦子沒有轉過來圈啊!!!謹記謹記!

具體答案參見下面幾篇博文。

http://blog.csdn.net/SunnyYoona/article/details/16917447

http://blog.csdn.net/ToYueXinShangWan/article/details/15021313

http://blog.csdn.net/xhu_eternalcc/article/details/14390617

http://blog.csdn.net/jenly121/article/details/14521287