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

Mã C ++ để tìm vị trí của sinh viên sau cuộc thi viết mã

Giả sử chúng ta có một mảng A với n phần tử. Trong một cuộc thi viết mã, có tổng số n học sinh sẽ tham gia và trước khi bắt đầu, mỗi học sinh trong số họ có một số đánh giá dương (số nguyên). A [i] thể hiện xếp loại của học sinh thứ i. Sau khi cuộc thi kết thúc, mỗi học sinh sẽ nhận được một số vị trí nguyên dương. Chúng tôi đang mong đợi các học sinh sẽ có được vị trí theo xếp hạng của họ. Nếu học sinh A có xếp hạng thấp hơn học sinh B, A sẽ được xếp hạng cao hơn học sinh B. Chúng ta phải tìm ra vị trí ở cuối cuộc thi.

Vì vậy, nếu đầu vào là A =[3, 5, 3, 4, 5], thì đầu ra sẽ là [4, 1, 4, 3, 1] vì sinh viên thứ 2 và thứ 5 chia sẻ vị trí đầu tiên với xếp hạng cao nhất, thứ 4 tiếp theo là học sinh với vị trí thứ ba, học sinh thứ nhất và thứ ba là học sinh cuối cùng chia sẻ vị trí thứ tư.

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 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 << ", "

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;
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);
}

Đầu vào

{ 3, 5, 3, 4, 5 }

Đầu ra

4, 1, 4, 3, 1,