Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

점수 테이블에서 학생의 순위를 찾는 C++ 코드

<시간/>

크기가 n x 4인 2차원 배열이 있다고 가정합니다. n명의 학생이 있고 그들의 ID가 0에서 n-1까지 시작한다고 가정합니다. 그들 각각은 영어, 지리, 수학 및 역사에 대한 4개의 점수를 가지고 있습니다. 표에서 학생들은 점수의 합을 내림차순으로 정렬할 것입니다. 2명 이상의 학생이 동일한 합계를 가지고 있는 경우 이러한 학생은 ID를 증가시켜 정렬됩니다. id가 0인 학생의 id를 찾아야 합니다.

따라서 입력이 다음과 같으면

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