分数数列算法实现java
来源:互联网 发布:淘宝宝贝详情页文字 编辑:程序博客网 时间:2024/04/30 08:27
1.分数数列概念:一个递推的分数数列的前面六项为:1/2,3/5,4/7,6/10,8/13,9/15…归纳出数列的构成规律并输出第n项以及前n项中的最大项的值
2.分析:该数列有两个规律:1>分母d与分子c存在关系表达式:d=c+i,i表示当前显示的是第i个数;2>分子c为前面i-1项中的所有分子、分母都不相同的最小正整数
3.实现代码:
public void fun(){ System.out.println("please input a number:"); Scanner in = new Scanner(System.in); int n = in.nextInt(); //初始化分子数组c和分母数组d int c[] = new int[n+1]; int d[] = new int[n+1]; c[1] = 1; d[1] = 2; c[2] = 3; d[2] = 5; //存储最大项所在的索引的kmax int kmax = 1; for(int i=3; i<=n; i++){ for(int k=c[i-1]+1; k<d[i-1]; k++){ int t = 0; for(int j=1; j<i-1; j++){ if(k == d[j]){ t = 1; break; } if(t == 0){ c[i] = k; d[i] = k + i; } } } if(c[i]*d[kmax] > d[i]*c[kmax]) kmax = i; }}
4.源代码分析:
1.创建两个数组分别表示分母和分子,初始化前面两个元素,方法递推2.由分数数列两个条件可知,第i个分数的分子必定大于第i-1个分数的分子,并且小于第i-1个分数的分母,因此第i个分数的分子必然在c[i-1]+1至d[i-1]-1范围内3.从上面这个范围中遍历,找到没有与前面的任何分母相同的数时,就是当前第i个分数的分子值了。因为前面的所有分子必定不在这里面,因为c[i]>c[i-1],所以取均不相同的最小正整数也就是取与前面的分母都不相同的最小正整数
0 0
- 分数数列算法实现java
- c算法-分数数列求和
- 蓝桥杯:Fibonacci数列【JAVA算法实现】
- c语言实现分数数列求和
- 分数数列
- (Java)用递归算法实现斐波那契数列
- java实现斐波拉契数列
- fibonacci数列 java实现
- 斐波拉契数列-java实现
- java实现 斐波拉契数列
- JAVA分数类的实现
- Java实现分数的加法
- 1101 分数数列求和
- 分数数列求和
- 第八周分数数列
- 奇特的分数数列
- java对角线数列的算法
- Fibonacci数列算法Java版
- 种子会长成什么,希望经历多久会失望
- Python 写入CSV文件
- Java用广度优先搜索快速搜索文件
- JSP自定义标签
- Hive中join, outer join, semi join区别
- 分数数列算法实现java
- 2-HTML中的p,h,hr,br标签以及注释
- Uva-1204 Fun Game(状压DP)
- python学习-函数、作用域
- C#多线程(二) -- ThreadStart
- Java中信息提示框的四种类型
- Linux(Debian)中的Samba服务器的配置
- lowlevel_init.S(u-boot.2012.10 源代码)
- 坚持#第146天~谦虚戒骄、不要为自己找理由