Computer >> Máy Tính >  >> Lập trình >> C ++

Phép cộng phạm vi II trong C ++


Giả sử chúng ta có một ma trận m * n được gọi là M và ma trận này được khởi tạo với tất cả các số 0 và chúng ta cũng có một số thao tác cập nhật. Bây giờ, các phép toán được biểu diễn bằng một mảng 2D và mỗi phép toán được biểu diễn bằng một mảng có hai số nguyên dương x và y, điều đó có nghĩa là M [i] [j] phải được thêm một cho tất cả các giá trị i trong phạm vi 0 đến a - 1 và tất cả các giá trị j trong phạm vi từ 0 đến b - 1. Chúng ta phải tìm số đếm số nguyên lớn nhất trong ma trận sau khi thực hiện tất cả các phép toán.

Vì vậy, nếu đầu vào là m =3, n =3 và các phép toán =[[2,2], [3,3]]., Thì đầu ra sẽ là 4,

Ban đầu ma trận giống như

0 0 0
0 0 0
0 0 0

Sau khi thực hiện [2,2], chúng ta sẽ nhận được

1 1 0
1 1 0
0 0 0

Sau khi thực hiện [2,2], chúng ta sẽ nhận được

2 2 1
2 2 1
1 1 1

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • minR:=m, minC:=n

  • cho mảng hoạt động tham gia

    • minR:=tối thiểu của minR và op [0]

    • minC:=tối thiểu của minC và op [1]

  • trả về minR * minC

Ví dụ

Hãy cùng chúng tôi xem cách triển khai sau đây để hiểu rõ hơn -

#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
   int maxCount(int m, int n, const vector<vector<int>>& ops) {
      int minR = m;
      int minC = n;
      for (const auto& op : ops){
         minR = min(minR, op[0]);
         minC = min(minC, op[1]);
      }
      return minR * minC;
   }
};
main(){
   Solution ob;
   vector<vector<int>> v = {{2,2},{3,3}};
   cout << (ob.maxCount(3,3,v));
}

Đầu vào

3,3,{{2,2},{3,3}}

Đầu ra

4