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

Mã C ++ để tìm thứ hạng của sinh viên từ bảng điểm

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