#include <iostream> #include <string> #include <time.h> using namespace std; int main() { double start = clock(),end(0); int a[15][15] = {{75},{95,64},{17,47,82},{18,35,87,10},{20,4,82,47,65},{19,01,23,75,3,34},{88,2,77,73,7,63,67},{99,65,04,28,06,16,70,92},{41,41,26,56,83,40,80,70,33},{41,48,72,33,47,32,37,16,94,29},{53,71,44,65,25,43,91,52,97,51,14},{70,11,33,28,77,73,17,78,39,68,17,57},{91,71,52,38,17,14,91,43,58,50,27,29,48},{63,66,4,68,89,53,67,30,73,16,69,87,40,31},{4,62,98,27,23,9,70,98,73,93,38,53,60,4,23}}; for(int l = 0 ; l<=14 ; l++) //行运算 { if(l>=1) { a[l][0] += a[l-1][0]; // 设置数组第一个元素 } for(int r = 0; r<=14 ; r++)//列运算 { if(r+1<l) a[l][r+1] = a[l][r+1] + ((a[l-1][r] >= a[l-1][r+1]) ? a[l-1][r] : a[l-1][r+1]); // 数组中间元素 if(r == l && l!=0)//必须排除第一行的情况 { a[l][r] = a[l][r] + a[l-1][r-1]; // 数组最后一个元素 break; } } } //找出最后一行中最大那个元素 int sum = a[14][0]; for(int r = 1; r<=14 ; r++) { if(sum<(a[14][r])) sum =a[14][r]; } cout << sum; end = clock(); double result = (end - start)/10000000; cout.setf(ios::fixed); cout <<endl<< "3.00GHz's run time = " << result << "s."<<endl; return 0; }