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

코딩 대회 후 학생의 위치를 ​​찾는 C++ 코드

<시간/>

n개의 요소가 있는 배열 A가 있다고 가정합니다. 코딩 대회에는 총 n명의 학생이 참가하며 시작하기 전에 모든 학생이 긍정적인 평가(정수)를 받습니다. A[i]는 i번째 학생의 등급을 나타냅니다. 콘테스트가 끝난 후 모든 학생은 양의 정수 위치를 갖게 됩니다. 우리는 학생들이 그들의 평가에 따라 자리를 잡을 것으로 기대합니다. 학생 A가 학생 B보다 엄밀히 낮은 등급을 받은 경우 A는 B보다 엄격하게 높은 위치를 차지하게 됩니다. 우리는 콘테스트가 끝날 때 위치를 찾아야 합니다.

따라서 입력이 A =[3, 5, 3, 4, 5]와 같은 경우 출력은 [4, 1, 4, 3, 1]이 됩니다. 왜냐하면 2번째와 5번째 학생이 가장 높은 평가를 받은 첫 번째 위치인 4번째를 공유하기 때문입니다. 다음 학생은 3위, 1위 및 3위 학생은 마지막 공유 4위입니다.

단계

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

n := size of A
for initialize i := 0, when i < n, update (increase i by 1), do:
   d := 1
   for initialize j := 0, when j < n, update (increase j by 1), do:
      if A[j] > A[i], then:
         (increase d by 1)
   cout << d << ", "

이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

#include <bits/stdc++.h>
using namespace std;
void solve(vector<int> A){
   int n = A.size();
   for (int i = 0; i < n; i++){
      int d = 1;
      for (int j = 0; j < n; j++){
         if (A[j] > A[i])
            d++;
      }
      cout << d << ", ";
   }
}
int main(){
   vector<int> A = { 3, 5, 3, 4, 5 };
   solve(A);
}

입력

{ 3, 5, 3, 4, 5 }

출력

4, 1, 4, 3, 1,