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

โค้ด C++ ตรวจสอบจำนวนกองหินวันที่สองถูกต้องหรือไม่

สมมติว่าเรามีอาร์เรย์ X และ Y ขนาดเท่ากัน มีกองหิน X[i] ลูกที่ดัชนี i ในวันแรก และวันที่สองดัชนี i มี Y[i] ลูก ในวันแรกมีสมาชิกมาหลายคน แต่ละคนจะไม่ทำอะไร เพิ่มหินไปที่กองบางกอง หรือย้ายหินจากกองหนึ่งไปอีกกองหนึ่ง เราต้องตรวจสอบว่า Y ถูกต้องจาก X หรือไม่

เช่น ถ้าอินพุตคือ X = [1, 2, 3, 4, 5]; Y = [2, 1, 4, 3, 5] เอาต์พุตจะเป็น True เพราะย้ายหิน 1 ลูกจากกองที่ 2 ไปกองที่ 1 และจากกองที่ 4 ไปกองที่ 3

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

n := ขนาดของ A
for i := 0 ถึง n-1:
    s := s + A[i]
for i := 0 ถึง n-1:
    d := d + B[i]
return (ถ้า d > s แล้ว false มิฉะนั้น true)

ตัวอย่างโค้ด

#include <bits/stdc++.h>
using namespace std;

bool solve(vector<int> A, vector<int> B) {
    int n = A.size(), d = 0, s = 0;
    for (int i = 0; i < n; i++)
        s += A[i];
    for (int i = 0; i < n; i++)
        d += B[i];
    return d > s ? false : true;
}

int main() {
    vector<int> X = { 1, 2, 3, 4, 5 };
    vector<int> Y = { 2, 1, 4, 3, 5 };
    cout << solve(X, Y) << endl;
}

อินพุต

{ 1, 2, 3, 4, 5 }, { 2, 1, 4, 3, 5 }

เอาต์พุต

1