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