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

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

สมมติว่าเรามีอาร์เรย์ A ขนาด n ในการแข่งขันเขียนโค้ด มีนักเรียน n คน ก่อนเริ่มทุกคนมี rating บวก A[i] คือ rating คนที่ i หลังจบการแข่งขัน ทุกคนได้ตำแหน่งจำนวนเต็มบวก คาดว่าจะจัดอันดับตาม rating ถ้า A มี rating ต่ำกว่า B อย่างเคร่งครัด A จะได้ตำแหน่งมากกว่า B อย่างเคร่งครัด หาตำแหน่งท้ายการแข่งขัน

เช่น ถ้าอินพุตคือ A = [3, 5, 3, 4, 5] เอาต์พุตจะเป็น [4, 1, 4, 3, 1] เพราะคนที่ 2 และ 5 อันดับ 1 คนที่ 4 อันดับ 3 คนที่ 1 และ 3 อันดับ 4

ขั้นตอนการแก้ปัญหา

n := ขนาดของ A
for i := 0 ถึง n-1:
    d := 1
    for j := 0 ถึง n-1:
        if A[j] > A[i]: เพิ่ม d ขึ้น 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,