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

โค้ด C++ ตรวจสอบเกมเทน้ำว่าทุกคนชนะหรือไม่

โจทย์: มีถ้วยเป้า 1 ใบ และถ้วยน้ำ n ใบ ผู้เล่นสลับเทน้ำ ถ้าเกินความจุ s จะแพ้ หากถ้วยเต็มแล้ว ผู้เล่นถัดไปไม่เล่น หาตรวจสอบว่าทุกคนชนะได้หรือไม่ (ไม่เกินความจุ)

Input: A=[3,1,3], s=4 → Output: True (คนที่ 1,2 เทจนเต็ม คนที่ 3 ไม่เล่น)

ขั้นตอนแก้

sort A
k := sum of first n-1 elements
if k > s: return false else return true

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

#include <bits/stdc++.h>
using namespace std;
bool solve(vector<int> A, int s) {
    int k = 0, n = A.size();
    sort(A.begin(), A.end());
    for (int i = 0; i < n-1; i++) k += A[i];
    return k <= s;
}
int main() {
    vector<int> A = {3,1,3};
    int s = 4;
    cout << solve(A,s) << endl;
}

Input

{3,1,3}, 4

Output

1