0001 uint64_t mrBrute(uint64_t H[], Rank n) { //蛮力版 0002 uint64_t maxRect = 0; 0003 for (Rank r = 0, s = 0, t = 0; r < n; r++, s = t = r) { //由定义 0004 do s--; while ((-1 != s) && (H[s] >= H[r])); s++; //顺序查找到左限,O(n) 0005 do t++; while ((t < n) && (H[r] <= H[t])); //顺序查找到右限,O(n) 0006 maxRect = max(maxRect, H[r] * (t-s)); //算出极大矩形的面积,并择优更新 0007 } 0008 return maxRect; //极大矩形中的最大者,即是全局的最大者 0009 } //每个极大矩形耗时O(n),累计O(n^2)