Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

รหัส C++ หาตำแหน่งนักเรียนหลังประกวดเขียนโค้ด


สมมติว่าเรามีอาร์เรย์ A ที่มีองค์ประกอบ n ในการประกวดเขียนโค้ด นักเรียนทั้งหมด n คนจะเข้าร่วม และก่อนเริ่ม ทุกคนจะได้รับคะแนนเชิงบวก (จำนวนเต็ม) A[i] แสดงถึงการให้คะแนนของนักเรียน ith หลังจากการแข่งขันจบลง นักเรียนทุกคนจะได้ตำแหน่งจำนวนเต็มบวก เราคาดว่านักเรียนจะได้รับสถานที่ตามการจัดอันดับของพวกเขา หากนักเรียน 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,