Giả sử chúng ta có một mảng 2d kích thước n x 4. Hãy xem xét có n học sinh và id của họ đang bắt đầu từ 0 đến n-1. Mỗi người trong số họ có bốn điểm cho các môn Tiếng Anh, Địa lý, Toán và Lịch sử, trong bảng, các học sinh sẽ được sắp xếp theo tổng điểm giảm dần. Nếu hai hoặc nhiều học sinh có tổng bằng nhau, những học sinh này sẽ được sắp xếp theo cách tăng id của họ. Chúng tôi phải tìm id của sinh viên có id là 0.
Vì vậy, nếu đầu vào giống như
100 | 98 | 100 | 100 |
100 | 100 | 100 | 100 |
90 | 99 | 90 | 100 |
100 | 98 | 60 | 99 |
thì đầu ra sẽ là 2
Các bước
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
n := size of table r := 1 p := table[0, 0] + table[0, 1] + table[0, 2] + table[0, 3] for initialize i := 1, when i < n, update (increase i by 1), do: if table[i, 0] + table[i, 1] + table[i, 2] + table[i, 3] > p, then: (increase r by 1) return r
Ví dụ
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
#include <bits/stdc++.h> using namespace std; int solve(vector<vector<int>> table){ int n = table.size(); int r = 1; int p = table[0][0] + table[0][1] + table[0][2] + table[0][3]; for (int i = 1; i < n; i++){ if (table[i][0] + table[i][1] + table[i][2] + table[i][3] > p) r++; } return r; } int main(){ vector<vector<int>> table = { { 100, 98, 100, 100 }, { 100, 100, 100, 100 }, { 90, 99, 90, 100 }, { 100, 98, 60, 99 } }; cout << solve(table) << endl; }
Đầu vào
{ { 100, 98, 100, 100 }, { 100, 100, 100, 100 }, { 90, 99, 90, 100 }, { 100, 98, 60, 99 } }
Đầu ra
2