C++ 代码在编码竞赛后找到学生的位置

阅读 112 收藏 0 点赞 0 评论 0

假设我们有一个包含 n 个元素的数组 A。在一场编程比赛中,总共有 n 名学生将参加,并且在开始之前,他们每个人都有一些正面评价(整数)。A[i] 表示第 i 个学生的评分。比赛结束后,每个学生都会得到一些正整数的位置。我们预计学生将根据他们的评分参加。如果学生 A 的评分严格低于学生 B,则 A 将获得严格高于 B 的位置。我们必须在比赛结束时找到位置。

因此,如果输入像 A = [3, 5, 3, 4, 5],那么输出将是 [4, 1, 4, 3, 1],因为第 2 和第 5 名学生共享最高评分的第一个位置,第四名学生排在第三位,第一名和第三名学生最后分享第四名。

脚步

为了解决这个问题,我们将遵循以下步骤 -

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,

评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号