算法如下:
#include<iostream.h> //内联函数 用来比较大小 inline int max(int a,int b) { return a>b?a:b; } int maxvalue(int a[6][6]) { int f[6][6]={0}; //循环 for(int i=0;i<6;i++) { for(int j=0;j<6;j++) { //如果是第一行第一列 if(0==i && 0==j) { f[i][j]=a[0][0]; } //如果是第一行 else if(0==i) { f[i][j]=f[i][j-1]+a[i][j]; } //如果是第一列 else if(0==j) { f[i][j]=f[i-1][j]+a[i][j]; } //其他列处理 else { f[i][j]=max(f[i-1][j],f[i][j-1])+a[i][j]; } cout<<f[i][j]<<" ";//打印最优值 } cout<<endl;//打印最优值 } return f[5][5]; } int main() { //测试数据 int a[6][6]= { {1,2,3,4,5,6}, {1,2,3,4,5,6}, {1,2,3,4,5,6}, {1,2,3,4,5,6}, {1,2,3,4,5,6}, {1,2,3,4,5,6} }; maxvalue(a); return 0; }
文章来自IT部落格