C++ 程式碼檢查取水遊戲是否所有勝利者
假設我們有一個包含 n 個元素的陣列 A 和另一個數字 s。桌面上有一個空的取水杯和 n 個非空的取水杯。在一個遊戲中,有幾個玩家。每次移動,玩家都會取一個非空的取水杯並將水全部倒入大杯中。如果水滿溢位來,玩家就輸了。我們必須檢查他們是否都會成為勝利者(大杯不會滿溢)。如果一個水杯已經完全裝滿,下一個玩家將不會進行自己的移動。這裡 s 是空杯的容量,A[i] 是第 i 個水杯中存在的取水量。
因此,如果輸入像 A = [3, 1, 3]; s = 4,則輸出將為 True,因為在第一和第二個玩家操作之後,大杯會被裝滿。對於最後一個玩家,將不會進行此移動。
步驟
為了解決這個問題,我們將執行以下步驟 −
k := 0 n := size of A sort the array A for initialize i := 0, when i < n - 1, update (increase i by 1), do: k := k + A[i] if k > s, then: return false Otherwise return true
示例
讓我們看看以下實現以獲得更好的理解 −
#include <bits/stdc++.h>
using namespace std;
bool solve(vector<int> A, int s){
int k = 0;
int n = A.size();
sort(A.begin(), A.end());
for (int i = 0; i < n - 1; i++)
k += A[i];
if (k > s)
return false;
else
return true;
}
int main(){
vector<int> A = { 3, 1, 3 };
int s = 4;
cout << solve(A, s) << endl;
}輸入
{ 3, 1, 3 }, 4輸出
1
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP