变形的杨辉三角问题的一种解法
来源:互联网 发布:java 判断基数偶数 编辑:程序博客网 时间:2024/05/17 07:36
这个问题也没有用到任何算法思想(可能是本人解这道题时,还太水了吧),而是通过数学观察解的题,解题过程也没有什么可参考、启发的。代码及题目如下:
package com.wly.algorithmproblem;/** * 变形的杨辉三角 * 题目详情: 1 1 1 1 1 2 3 2 11 3 6 7 6 3 1以上三角形的数阵,第一行只有一个数1, 以下每行的每个数,是恰好是它上面的数,左上的数和右上数等3个数之和(如果不存在某个数,认为该数就是0)。求第n行第一个偶数出现的位置。如果没有偶数,则输出-1。例如输入3,则输出2,输入4则输出3。输入n(n <= 1000000000) * @author wly * */public class SpecialTriangle {public static void main(String[] args) {System.out.println(solution(4));}/** * 一、 * 和"数字覆盖"一样,本题的解题方法也主要是数学观察推导,并没有用到多少算法的思想 * 定理:同一行的"开始"位置不可能连续出现四个奇数 * 1 t1 t2 * 1 x1 x2 x3 * 设x1,x2,x3都是奇数,则1+t1->奇数,推出t1是奇数,1+t1+t2->奇数,推出t2是偶数,t1+t2->偶数,矛盾。定理得证 * 二、 * 再观察三角形数的分布,每一行的第一个数总是1,第二个数总是n-1,第三个数总是(n-1)+(n-2)+...+2+1 * 因为不可能出现连续4个奇数,所以第四个数就没有求的意义了。另外关于第三个数的值,也是可以证明的,这里就不做详细介绍了,感兴趣的朋友可以试试。 * @param x */public static int solution(int x) {//输入不合法if(x <= 0) {return -1;}if(x <= 2) {return -1;}//判断第二行数字是否是偶数if((x -1) % 2 == 0) {//return n-1;return 2;}//判断第三个数,WOW!!这里是不是一个陷阱,大数求和的和值奇偶性快速判断,不过还好注意到了//使用等差数列求和公式:(n+1)n/2,注意int类型的数值越界!!!x = x -1;int temp = x % 2;if(temp == 0) {//拿到n+1的个位数和n的个位数,再将两个个位数相乘即可,根据结果判断奇偶性即可if((((x / 2)% 10) * ((x+1) %10)) % 2 == 0) {return 3;} else {return 4;}} else {if(((((x+1) / 2)% 10) * ((x) %10)) % 2 == 0) {return 3;} else {return 4;}}}}运行结果:
3O啦~~~
转载请保留出处:http://blog.csdn.net/u011638883/article/details/17369543
谢谢!!
0 0
- 变形的杨辉三角问题的一种解法
- 杨辉三角的变形问题ruby解法
- 杨辉三角的变形
- 杨辉三角的变形
- 杨辉三角的变形
- 杨辉三角的变形
- 杨辉三角的变形
- 杨辉三角的变形
- 庞果网之杨辉三角的变形
- 杨辉三角的变形-matlab-java
- HWOJ 杨辉三角的变形
- 【华为 OJ 】杨辉三角的变形
- 杨辉三角的变形【编程题】
- 英雄会-----杨辉三角-----杨辉三角的变形
- 杨辉三角的三种解法
- 杨辉三角的多种解法
- 杨辉三角的几种解法。
- 一种背包问题的解法
- 断篇-大数据金融行业企业应用几点思考
- 网络爬虫之Windows环境Heritrix3.0配置指南
- 数字覆盖问题的一种解法
- 图像算法工程师面试汇总
- 在Apache中利用ServerAlias设置虚拟主机接收多个域名
- 变形的杨辉三角问题的一种解法
- 京东发布即时通讯工具“京东咚咚”
- 关于SQL注入点的总结
- Unsupervised Feature Learning _介绍
- 算法之旅,直奔<algorithm>之十三 fill
- 微软顶级工程师Arcas跳槽Google加盟机器学习团队
- utf-8编码汉字
- typedef函数指针用法
- ENGLISH资料收集(50)-你拨打的电话正忙