import java.util.Scanner;

 /**
* 杨辉三角的变形
*第一行为1,后面每一行的一个数是其左上角到右上角的数的和,没有的记为0
* 1
* 1 1 1
* 1 2 3 2 1
* 1 3 6 7 6 3 1
* 1 4 10 16 19 16 10 4 1
* 1 5。。。
*求第x行的第一个偶数是第几个
*
*/
public class YangHui { public static void main(String[] args) {
Scanner cin = new Scanner(System.in) ;
int line = cin.nextInt() ;
cin.close(); System.out.println(run(line)) ; } /**
* 计算返回值
* @param x
* @return
*/
public static int run(int x){
if(x == 1 || x == 2){
return -1 ;
}
//每一行的第一个数为1,第二个数为n-1;第三个数为 n*(n-1)/2
if(x%2 == 1){
return 2 ;
}else if(x*(x-1)%4 == 0){
return 3 ;
}
//若前三个均不是偶数,则从第四个数开始计算,由于是对称的的,所以判断到第x行的第x个数就可以了
for(int i = 4 ; i <= x ; i++){
int res = cal(x,i) ;
if(res%2 == 0){
return i ;
}
}
return -1 ;
} /**
* 传入n,i表示第n行的第i个,返回其值,递归的方法求解
* @param n
* @param i
* @return
*/
public static int cal(int n, int i){
if(i > n){
return cal(n,2*n-i) ;
}
if(n == 2 && i > 0){
return 1 ;
}
if(i == 1){
return 1 ;
}
if(i <= 0){
return 0 ;
}
int res ;
res = cal(n-1,i) + cal(n-1,i-1) + cal(n-1,i-2) ;
return res ;
} }

华为OJ平台——杨辉三角的变形的更多相关文章

  1. 华为oj----iNOC产品部-杨辉三角的变形 .

    此题提供三种方法,第一种,一开始就能想到的,设置一个足够大的数组存储生成的杨辉三角,然后进行判断就行,此方法参见:华为oj iNOC产品部-杨辉三角的变形 另一种方法是采用递归: 三角形的每行的个数为 ...

  2. 华为机试-iNOC产品部-杨辉三角的变形

    题目描述 1 1 1 1 1 2 3 2 1 1 3 6 7 6 3 11 4 10 16 19 16 10 4 1以上三角形的数阵,第一行只有一个数1,以下每行的每个数,是恰好是它上面的数,左上角数 ...

  3. [LeetCode] Pascal's Triangle II 杨辉三角之二

    Given an index k, return the kth row of the Pascal's triangle. For example, given k = 3,Return [1,3, ...

  4. LeetCode(119):杨辉三角 II

    Easy! 题目描述: 给定一个非负索引 k,其中 k ≤ 33,返回杨辉三角的第 k 行. 在杨辉三角中,每个数是它左上方和右上方的数的和. 示例: 输入: 3 输出: [1,3,3,1] 进阶: ...

  5. 以杨辉三角为例,从内存角度简单分析C语言中的动态二维数组

    学C语言,一定绕不过指针这一大难关,而指针最让人头疼的就是各种指向关系,一阶的指针还比较容易掌握,但一旦阶数一高,就很容易理不清楚其中的指向关系,现在我将通过杨辉三角为例,我会用四种方法从内存的角度简 ...

  6. hdu 5698(杨辉三角的性质+逆元)

    ---恢复内容开始--- 瞬间移动 Accepts: 1018 Submissions: 3620 Time Limit: 4000/2000 MS (Java/Others) Memory Limi ...

  7. [LeetCode] 119. Pascal's Triangle II 杨辉三角之二

    Given a non-negative index k where k ≤ 33, return the kth index row of the Pascal's triangle. Note t ...

  8. [LeetCode] Pascal's Triangle 杨辉三角

    Given numRows, generate the first numRows of Pascal's triangle. For example, given numRows = 5,Retur ...

  9. POJ2167Irrelevant Elements[唯一分解定理 组合数 杨辉三角]

    Irrelevant Elements Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 2407   Accepted: 59 ...

随机推荐

  1. 如何缩短SQL Server 的启动时间

    将/nosplash添加到SQLServer Manageement Studio的快捷方式可以缩短启动时间.为此,右击SSMS快捷方式(位于你的桌面上.start菜单中或任务栏中)并选择Proper ...

  2. windows7修改双系统启动项名称、先后顺序、等待时间

    一.进入BCDEdit.exe  正常启动Windows 7 系统,点击“开始” -> “所有程序” -> “附件”,右击“命令提示符” -> “以管理员身份运行”(需要将操作当前用 ...

  3. ADF_ADF Faces系列1_使用JSF开发基于Ajax的用户界面:ADF Faces 富客户端组件简介(Part1)

    2013-05-01 Created By BaoXinjian

  4. c#(特殊集合)

    Stack集合(先进后出) Stack ss = new Stack();//初始化 ss.Push(1);//.Push()一个一个推进,赋值ss.Push(2);ss.Push(3);ss.Pus ...

  5. suibi 117

    -Djava.net.preferIPv4Stack=true re.findall(r"^(\d+)" , content) content = content.replace( ...

  6. [Mysql] MySQL配置文件my.cnf的理解

    一.缘由 最近要接手数据库的维护工作,公司首选MySQL.对于MySQL的理解,我认为很多性能优化工作.主从主主复制都是在调整参数,来适应不同时期不同数量级的数据. 故,理解透彻my.cnf里的参数是 ...

  7. sql异常

    表结构 Id int UncheckedTitle nvarchar(50) CheckedValue nvarchar(1000) CheckedRemark nvarchar(1000) Chec ...

  8. Studio之版本管理工具Git (图文教程)

    目前业界主流的版本管理工具主要是 svn/git.svn是1种集中式的代码管理工具,而git是1种散布式的代码管理工具,广受极客的爱好.而基于git的github更是全宇宙码农的提高逼格,深究技术的必 ...

  9. Apache Thrift学习之二(基础及原理)

    Apache Thrift 是 Facebook 实现的一种高效的.支持多种编程语言的远程服务调用的框架.本文将从 Java 开发人员角度详细介绍 Apache Thrift 的架构.开发和部署,并且 ...

  10. 使用maven下载依赖包及maven常见问题汇总

    最近下载了SPRING3.1.4,发现只有SPRING相关的源码,没有其依赖的jar包.SPRING依赖的jar相当多,自己一个一个的下载比较费劲,就仔细阅读了SPRING下载说明,新版本的SPRIN ...