第二天的樁數是否有效的 C++ 程式碼
假設我們有兩個相同大小的陣列 X 和 Y。第一天第一堆石子的數量是 X[i],第二天則為 Y[i]。第一天來了很多成員。他們要麼什麼都不做,要麼往某些堆新增一些石子,要麼從一堆石子中交換一些石子。我們必須檢查 Y 是否從 X 衍生而來。
因此,如果輸入類似 X = [1, 2, 3, 4, 5];Y = [2, 1, 4, 3, 5],則輸出將為 True,因為從第二堆石子移動一塊石子到第一堆石子,從第四堆石子移動一塊石子到第三堆石子。
步驟
要解決這個問題,我們將遵循以下步驟 −
n := size of A for initialize i := 0, when i < n, update (increase i by 1), do: s := s + A[i] for initialize i := 0, when i < n, update (increase i by 1), do: d := d + B[i] return (if d > s, then false, otherwise 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
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP