#求fibo数列的非递归版本:动态规划,可用来练练手
p=[]
def fibo(n):
i=0
p.append(1)
p.append(1)
for i in range(2,n+1):
if i!=n:
p.append(p[i-1]+p[i-2])
else:
return p[i-1]+p[i-2]
print fibo(10)
//
#include "stdafx.h"
//POJ1163 The Triangle
//动态规划 比较简单
//#include <iostream.h>
#define MAX 101
int triangle[MAX][MAX]=
{
{7},
{3,8},
{8,1,0},
{2,7,4,4},
{4,5,2,6,5}
};
int maxtri[MAX][MAX]={0};
int n;
int longestPath(int hight);
int _tmain(int argc, _TCHAR* argv[])
{
printf("%d",longestPath(4));
return 0;
}
int longestPath(int hight)
{
int i,j;
int curmax;
int totalmax=0;
maxtri[0][0]=triangle[0][0];
for(i=1;i<hight;i++)
{
maxtri[i][0]=maxtri[i-1][0]+triangle[i][0];
maxtri[i][i]=maxtri[i-1][i-1]+triangle[i][i];
for (j=1;j<i;j++)
{
if(maxtri[i-1][j-1]>maxtri[i-1][j])
maxtri[i][j]=maxtri[i-1][j-1]+triangle[i][j];
else
maxtri[i][j]=maxtri[i-1][j]+triangle[i][j];
if (maxtri[i][j]>totalmax)
totalmax=maxtri[i][j];
}
}
return totalmax;
}
#Max Sequence
#最大递增数列
def max_sequ(data):
i=0
cursum=0
curmax=0
res=0
buf=[0 for i in range(0,len(data))]
#rebuf=[0 for i in range(0,len(data))]
for i in range(0,len(data)):
cursum+=data[i]
if cursum<0:
cursum=0
if cursum>curmax:
curmax=cursum
buf[i]=curmax
cursum=0
curmax=0
for i in range(len(data)-1,0,-1):
cursum+=data[i]
curi=0
if cursum<0:
cursum=0
if cursum>curmax:
curmax=cursum
if(curmax+buf[i-1]>res):
res=curmax+buf[i-1]
curi=i
print buf#,rebuf
print 'location of i',curi+1
return res
indata=[-5,9,-5,11,20,4,-32,68,-34,45]
print max_sequ(indata)