// An highlighted block
#define _CRT_SECURE_NO_WARNINGS
#include <bits/stdc++.h>
using namespace std;
int dp[40];
int F(int n){if(n <=1)return n;
dp[0]=0;
dp[1]=1;for(int i =2; i <= n; i++){if(dp[i]==0) dp[i]= dp[i -1]+ dp[i -2];}return dp[n];}
int main(){
int n;while(scanf("%d",&n)!=EOF){
cout <<F(n)<< endl;}return0;}
100000626 - 《算法笔记》11.2小节——动态规划专题->最大连续子序列和
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int main(){
int n, a[10005], dp[10005], ans, e;while(cin >> n && n){
ans =-1e9;for(int i =0; i < n; i++)//读入数据
cin >> a[i];
dp[0]= a[0];if(dp[0]> ans){
ans = dp[0];
e =0;}for(int i =1; i < n; i++){
dp[i]=max(a[i], dp[i -1]+ a[i]);if(dp[i]> ans){
ans = dp[i];
e = i;}}
int s = e, q = ans;while(1){
q -= a[s];
s--;if(s ==-1)break;if(q ==0&& a[s]!=0)break;}if(ans >=0) cout << ans <<" "<< a[s +1]<<" "<< a[e]<< endl;else cout <<0<<" "<< a[0]<<" "<< a[n -1]<< endl;}}