博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
codeforces B. The Fibonacci Segment 解题报告
阅读量:5125 次
发布时间:2019-06-13

本文共 1524 字,大约阅读时间需要 5 分钟。

题目链接:

题目意思:简单来说,就是要找出最长的斐波纳契长度。  

      解决的方法不难,但是要注意更新左区间和右区间的值,而且需要把当前求出的斐波纳契长度和之前求出的斐波纳契长度进行对比,以便更新得出的最长的斐波纳契长度。

      特别注意的是,序列只有一个、两个或者没有斐波纳契长度的处理。

1 #include 
2 #include
3 #include
4 using namespace std; 5 6 const int maxn = 1e5 + 5; 7 int a[maxn]; 8 9 int main()10 {11 int n, i, l, r, len, lent;12 while (scanf("%d", &n) != EOF)13 {14 // freopen("in.txt", "r", stdin);15 for (i = 1; i <= n; i++)16 scanf("%d", &a[i]);17 lent = len = l = r = 1;18 int flag = 0;19 int flag1 = 0;20 for (i = 3; i <= n; i++)21 {22 if (a[i] == a[i-1] + a[i-2])23 {24 flag1 = 1;25 r = i;26 len = r - l + 1; // 当前长度27 if (lent < len)28 lent = len;29 30 }31 else32 {33 if (!flag && flag1)34 {35 lent = len; // 第一个求出的斐波纳契长度,以便后面下一次求出的斐波纳契长度有得比较36 flag = 1;37 }38 l = i-1; //更新左区间的下标39 }40 }41 if (!flag1)42 {43 if (n == 1) //序列只有一个数44 printf("1\n");45 else //没有斐波纳契数且序列数目多于一个46 printf("2\n");47 }48 else49 {50 printf("%d\n", lent);51 }52 }53 return 0;54 }

 

转载于:https://www.cnblogs.com/windysai/p/3436641.html

你可能感兴趣的文章
剑指offer 重建二叉树
查看>>
排序算法之冒泡排序
查看>>
so打包进APK
查看>>
cocos2d 走动椭圆
查看>>
Spring 构造注入 传參数
查看>>
三白话经典算法系列 Shell排序实现
查看>>
启动文件、简单的消息框
查看>>
素数倒数的级数发散性的一个证明
查看>>
python初识
查看>>
《网络攻防》第6周作业
查看>>
Linux学习——echo和read命令用法
查看>>
WPF中的数据绑定Data Binding使用小结
查看>>
java读写注册表的两种方式,Preferences与jRegistry
查看>>
轻量级web富文本框——wangEditor使用手册(4)——配置下拉菜单 demo
查看>>
[C++程序设计]用指向数组的指针作函数参数
查看>>
深入理解C# 静态类与非静态类、静态成员的区别 [转载]
查看>>
套接字结构汇总
查看>>
JS脚本病毒调试脚本-Trojan[Downloader]:JS/Nemucod
查看>>
谈谈两种标准库类型---string和vector
查看>>
ERROR: JDWP Transport dt_socket failed to initialize, TRANSPORT_INIT(510)
查看>>