สมมติว่าเรามีอาร์เรย์ 2 มิติขนาด n x 4 พิจารณาว่ามีนักเรียน n คน และรหัสของพวกมันเริ่มต้นจาก 0 ถึง n-1 แต่ละคนมีคะแนนภาษาอังกฤษ ภูมิศาสตร์ คณิตศาสตร์ และประวัติศาสตร์สี่คะแนน ในตาราง นักเรียนจะถูกจัดเรียงตามผลรวมของคะแนนที่ลดลง หากนักเรียนสองคนขึ้นไปมีผลรวมเท่ากัน นักเรียนเหล่านี้จะถูกจัดเรียงตามการเพิ่มรหัส เราต้องหา id ของนักเรียนที่มี id เป็น 0
ดังนั้นหากอินพุตเป็นแบบ
100 | 98 | 100 | 100 |
100 | 100 | 100 | 100 |
90 | 99 | 90 | 100 |
100 | 98 | 60 | 99 |
แล้วผลลัพธ์จะเป็น 2
ขั้นตอน
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
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
ตัวอย่าง
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
#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; }
อินพุต
{ { 100, 98, 100, 100 }, { 100, 100, 100, 100 }, { 90, 99, 90, 100 }, { 100, 98, 60, 99 } }
ผลลัพธ์
2