文档章节

编程找规律3

zengxiangwei
 zengxiangwei
发布于 2013/10/22 20:51
字数 555
阅读 61
收藏 0
/****************************************************************** 

一个数列的前 6 项为:1/2,3/5,4/7,6/10,8/13,9/15等,试求数列 

的第 n (n<2000) 项。 

分析:经过观察发现分母有如下性质,等于分子加上该元素在序列中的顺序标 

号,如第2项,3/5  5 = 3+2  ,第三项 4/7  7 = 4+3; 

那么分子有什么性质呢,经比较观察得到,分子是,前面序列中(包括分子和 

分母)未出现的最小整数,仔细观察还发现,所有的分子是递增的,分母也是 

递增的,这样就可以通过递推的方式从前往后依次推出所有的元素。这里有 

一个小技巧,在查找分子是,由序列性质可知,后项分子大于前项分子,这样 

就可以缩小查找,为了便于查找,将所有的项的分子分母挨着存放在数组中, 

如 a[0] = 1,第一项分子;a[2] = 2,第一项分母; 

*******************************************************************/ 

  

/*******************************************************************************
Copyright (c)哈尔滨工程大学  曾相未  保留所有权利。



文件名: Test_6_2.java 

描述: 问题求解找规律3
作者: 曾相未
时间:2013/10/21

*******************************************************************************/


import java.util.Scanner; 

class Test_6_2{ 

         //依次向后推出需要的项 

         void fullNumberArray(int a[], int n){ 

                   a[0] = 1; 

                   a[1] = 2;//第一项 

                   int t; 

                   //从第二项依次向后递推 

                   for(int i = 2;i < 2 * n;i = i + 2) 

                   { 

                            //先求出分子 

                            t = a[i -2] + 1;//比前项分子大 

                            //依次向前在分母中找,看有没有与t相同的数; 

                            int j = i -1; 

                            while(true) 

                            { 

                                     if(t > a[j])  break;//所有前项分母中没有t,找到分子,退出 

                                     //前项分母中含有t,t加1,继续在前项分母中找t 

                                     if(t == a[j])  {t ++;j = i - 1;} 

                                     else j = j - 2;//继续往前找 

                            } 

                            a[i] = t;//分子 

                            a[i+1] = a[i] + i/2 + 1;//分母 

                   } 

         }    

         

         public static void main(String []args){ 

                   Test_6_2 test = new Test_6_2(); 

                   Scanner sc = new Scanner(System.in); 

                   System.out.println("Please input n:"); 

                   int n = sc.nextInt(); 

                   int [] a = new int [2 * n + 10];//用于存放序列,分子分母依次存放 

                   test.fullNumberArray(a,n); 

                   //输出要求的序列 

                   for(int i = 0; i < 2 * n;i = i + 2) 

                            { 

                                     System.out.print(a[i] + "/"  + a[i+1] + " "); 

                                     if((i + 2) % 20 == 0)  System.out.println();//每行打印10项 

                            } 

         } 

}

© 著作权归作者所有

共有 人打赏支持
zengxiangwei
粉丝 8
博文 15
码字总数 23298
作品 0
郑州
程序员
C算法编程题(五)“E”的变换

程序描述   给定7×7二维数组矩阵,元素由“0”或“1”组成,并且根据元素值屏幕显示“E”字形图案,其中“0”显示空格,“1”显示“@”。 如矩阵 0 1 1 1 1 1 0 0 1 0 0 0 0 0 0 1 0 0 0 ...

范大脚脚
2017/11/07
0
0
[LeetCode] Rotate Function 旋转函数

Given an array of integers and let n to be its length. Assume to be an array obtained by rotating the array k positions clock-wise, we define a "rotation function" on as follow:......

机器的心脏
2017/12/12
0
0
程序员抢了数学家的饭碗

【威哥说】没有接触过程序的同学,感觉代码距离我们很好遥远,可是你真正的学会了编程之后,你才知道,其实程序可是实现所有的事物。本篇文章就是波波老师针对一个学生的提问,单纯的使用循环...

磨砺营
2016/10/12
11
0
自我阅读的一些体会

激励: 1.但是我想告诉你的是,我并不是因为别人优秀,自己很low就让自己low下去,我只是想努力一点点,进步就多一点点。 释怀: 1.人生其实就像马拉松一样,一辈子很长,你不要在乎一时一刻...

Iam光星人
2017/02/04
0
0
编程中的“末行效应”

我研究过数百个因“拷贝-粘贴”导致的错误。可以肯定的是,程序员常常会在一大段代码的最后一段里犯错。好像还没有任何编程书讨论过这种现象,因此我决定自己写点什么。我称之为“末行效应”...

oschina
2014/11/18
5.3K
24

没有更多内容

加载失败,请刷新页面

加载更多

下一页

day58-20180816-流利阅读笔记-待学习

苹果市值破万亿,iPhone 会涨价吗? Lala 2018-08-16 1.今日导读 苹果教父乔布斯曾经说过:“活着就是为了改变世界。”虽然他在 56 岁时就遗憾离世,但他极具创新和变革的精神早已深埋进苹果...

aibinxiao
29分钟前
4
0
[雪峰磁针石博客]python3快速入门教程1 turtle绘图-2函数

菲波那契序列: >>> # Fibonacci series:... # the sum of two elements defines the next... a, b = 0, 1>>> while b < 10:... print(b)... a, b = b, a+b...112......

python测试开发人工智能安全
今天
0
0
java环境变量配置最正确的方式

原贴:https://blog.csdn.net/qq_40007997/article/details/79784711,十分详细,亲测有效

kitty1116
今天
0
0
49.Nginx防盗链 访问控制 解析php相关 代理服务器

12.13 Nginx防盗链 12.14 Nginx访问控制 12.15 Nginx解析php相关配置(502的问题) 12.16 Nginx代理 扩展 502问题汇总 http://ask.apelearn.com/question/9109 location优先级 http://blog....

王鑫linux
今天
2
0
Nginx防盗链、访问控制、解析php相关配置、Nginx代理

一、Nginx防盗链 1. 编辑虚拟主机配置文件 vim /usr/local/nginx/conf/vhost/test.com.conf 2. 在配置文件中添加如下的内容 { expires 7d; valid_referers none blocked server_names *.tes......

芬野de博客
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部