Ejemplo n.º 1
0
std::pair<double, double> DetectorModule::minMaxEtaWithError(double zError) const {
  if (cachedZError_ != zError) {
    cachedZError_ = zError;
    double eta1 = (XYZVector(0., maxR(), maxZ() + zError)).Eta();
    double eta2 = (XYZVector(0., minR(), minZ() - zError)).Eta();
    double eta3 = (XYZVector(0., minR(), maxZ() + zError)).Eta();
    double eta4 = (XYZVector(0., maxR(), minZ() - zError)).Eta();
    cachedMinMaxEtaWithError_ = std::minmax({eta1, eta2, eta3, eta4});
    //cachedMinMaxEtaWithError_ = std::make_pair(MIN(eta1, eta2), MAX(eta1, eta2));
  }
  return cachedMinMaxEtaWithError_;
}
Ejemplo n.º 2
0
 int maximalSquare(vector<vector<char> > &m) {
     int sz = m.size();
     if(sz == 0) return 0;
     int ans = 0;
     vector<int> h;
     h.resize(m[0].size());
     fill(h.begin(), h.end(), 0);
     for(int i = 0; i < sz; i++) {
         for(int j = 0; j < m[i].size(); j++) {
             if(m[i][j] == '0') h[j] = 0;
             else h[j]++;
         }
         ans = max(ans, maxR(h));
     }
     return ans * ans;
 }
Ejemplo n.º 3
0
int maxR ( int A[], int n ) { //数组求最大值算法(线性递归版)
   if ( 2 > n ) //平凡情况,递归基
      return A[n - 1]; //直接(非递归式)计算
   else //一般情况,递归:在前n - 1项中的最大值与第n - 1项之间,取大者
      return max ( maxR ( A, n - 1 ), A[n - 1] );
} //O(1) * 递归深度 = O(1) * (n + 1) = O(n)