第二天的樁數是否有效的 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

更新於: 2022-03-29

143 次瀏覽

開啟您的 職業

完成課程後獲得認證

開始
廣告
© . All rights reserved.