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,
廣告