递推之摆动数列
来源:互联网 发布:源码包安装php 编辑:程序博客网 时间:2024/05/05 15:48
问题描述
已知递推数列:a(1)=1,a(2i)=a(i)+1,a(2i+1)=a(i)+a(i+1),(i为正整数),试求该数列的第n项与前n项中哪些项最大?最大值为多少?。算法分析
该数列分项序号为奇或偶两种情况作不同递推,所得数列呈大小有规律的摆动.
设置a数组,赋初值a(1)=1.根据递推式,在循环中分项序号i(2─n)为奇或偶作不同递推:
mod(i,2)=0(即i为偶数),a(i)=a(i/2)+1.
mod(i,2)=1(即i为奇数),a(i)=a((i+1)/2)+a((i-1)/2)
每得一项a(i),与最大值max作比较,如果a(i)>max,则max=a(i).
最后,在所有项中搜索最大项(因最大项可能多于一项),并打印最大值max.- 程序代码
#include <iostream>using namespace std;int main(){ int n; cin >> n; int* arr = new int[n+1]; arr[1] = 1; int max = arr[1]; for (int i=2; i<=n; ++i) { if (i%2 == 0) //偶数 { arr[i] = arr[i/2] + 1; } else //奇数 { arr[i] = arr[(i-1)/2] + arr[(i+1)/2]; } if (arr[i] > max) { max = arr[i]; } } cout << arr[n] << endl; for (int i=1; i<=n; ++i) { if (arr[i] == max) { printf("arr[%d]=", i); } } cout << max << endl; delete[] arr; return 0;}
0 0
- 递推之摆动数列
- 递推关系数列之Catalan数
- C++递推算法之菲波拉契数列
- 递推-------fibnacci数列
- 递推数列
- OJ_1081 递推数列
- poj2590steps数列递推
- 递推数列
- 题目1081:递推数列
- 题目1081:递推数列
- 题目1081:递推数列
- HDU 1143 【递推】【数列】
- 题目1081:递推数列
- OpenJudge_P1788 Pell数列(递推)
- bzoj2656 数列 高精度&递推
- 题目1081:递推数列
- 题目1081:递推数列
- 1.3递推算法(顺推斐波拉契数列 逆推)
- hadoop深入研究:(三)——hdfs数据流 随机选节点
- JQuery 遍历对象(DOM,数组,JSON)方法
- Hadoop DataNode的读和写流程 选择datanode方法 机架感知
- 单链队列基本操作
- Android下载图片
- 递推之摆动数列
- Android 基本控件的使用七(ListView+BaseAdapter)(demo)
- RaspberryPi2 安装系统到硬盘
- HDFS源码分析(5):datanode数据块的读与写DataXceiver
- redis 对hash设置expires
- (LeetCode 304) Range Sum Query 2D - Immutable
- C++作业3
- HDFS写操作(二) DataNode DataXceiverServer DataXceiver
- jquery实现轮询