Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

โค้ด C++ หายศนักเรียนจากตารางคะแนน

สมมติว่าเรามีอาร์เรย์ 2D ขนาด n x 4 มีนักเรียน n คน ID 0 ถึง n-1 แต่ละคนมีคะแนน 4 วิชา: อังกฤษ, ภูมิศาสตร์, คณิตศาสตร์, ประวัติศาสตร์ ตารางเรียงตามผลรวมคะแนนลดลง ถ้าผลรวมเท่ากัน เรียงตาม ID เพิ่มขึ้น ต้องหายศของนักเรียน ID 0

เช่น ถ้าอินพุตเป็นตาราง 4x4 ตามตัวอย่าง เอาต์พุตจะเป็น 2

ขั้นตอนการแก้ปัญหา

n := ขนาดของตาราง
r := 1
p := table[0,0] + table[0,1] + table[0,2] + table[0,3]
for i := 1 ถึง n-1:
    if table[i,0]+table[i,1]+table[i,2]+table[i,3] > p:
        เพิ่ม r ขึ้น 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