华为OJ平台——杨辉三角的变形

Posted mukekeheart

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了华为OJ平台——杨辉三角的变形相关的知识,希望对你有一定的参考价值。


 1 import java.util.Scanner;
 2 
 3 /**
 4  * 杨辉三角的变形
 5  *第一行为1,后面每一行的一个数是其左上角到右上角的数的和,没有的
 6  *记为0
 7  *                        1
 8  *                    1    1    1
 9  *                1    2    3    2    1
10  *            1    3    6    7    6    3    1
11  *        1    4    10    16    19    16    10    4    1
12  *    1    5。。。
13  *求第x行的第一个偶数是第几个
14  *
15  */
16 public class YangHui {
17 
18     public static void main(String[] args) {
19         Scanner cin = new Scanner(System.in) ;        
20         int line = cin.nextInt() ;
21         cin.close();
22                 
23         System.out.println(run(line)) ;
24         
25     }
26     
27         //计算返回值
28     public static  int run(int x){
29                 //第一行、第二行均没有偶数
30         if(x == 1 || x == 2){
31             return -1 ;
32         }
33         //每一行的第一个数为1,第二个数为n-1;第三个数为 n*(n-1)/2
34         if(x%2 == 1){
35             return 2 ;
36         }else if(x*(x-1)%4 == 0){
37             return 3 ;
38         }    
39                 //若前三个均不是偶数,则从第四个数开始计算,由于是对称的的,所以判断到第x行的第x个数就可以了    
40         for(int i = 4 ; i <= x ; i++){
41 
42             int res = cal(x,i) ;
43             if(res%2 == 0){
44                 return i ;
45             }
46         }
47         return -1 ;
48      }
49     
50         //传入n,i表示第n行的第i个,返回其值,递归的方法求解
51     private static int cal(int n, int i){
52         if(i > n){
53             return cal(n,2*n-i) ;
54         }
55 
56         if(n == 2 && i > 0){
57             return 1 ;
58         }
59 
60         if(i == 1){
61             return 1 ;
62         }
63 
64         if(i <= 0){
65             return 0 ;
66         }        
67 
68         int res = cal(n-1,i) + cal(n-1,i-1) + cal(n-1,i-2) ;
69 
70         return res ;
71     }
72 
73 } 

 


 

以上是关于华为OJ平台——杨辉三角的变形的主要内容,如果未能解决你的问题,请参考以下文章

华为机试题 HJ53杨辉三角的变形

华为机试题 HJ53杨辉三角的变形

华为机试—变形的杨辉三角形

#yyds干货盘点# 解决华为机试:杨辉三角的变形

华为机试HJ53:杨辉三角的变形

华为OJ平台——字符串分隔