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個學生接下來獲得第三名,第1和第3個學生最後共享第四名。

步驟

為了解決這個問題,我們將遵循以下步驟:

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,

更新於:2022年3月15日

瀏覽量:288

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告