检查它在C ++中是否是一个好的数组
假设我们有一个称为正整数的数组。我们必须选择一些数字子集,然后将每个元素乘以一个整数,然后将所有这些数字相加。如果我们可以通过任何可能的子集和被乘数从数组中得到1的和,则该数组将是一个很好的数组。
我们必须检查数组是否正确。
因此,如果输入类似于[12,23,7,5],则输出将为True,这是因为如果我们采用数字5、7,则5*3+7*(-2)=1
为了解决这个问题,我们将遵循以下步骤-
g:=nums[0]
对于初始化i:=1,当i<nums的大小时,更新(i增加1),-
g:=g和num的gcd[i]
当g为1时返回true
让我们看下面的实现以更好地理解-
示例
#include <bits/stdc++.h> using namespace std; class Solution { public: int gcd(int a, int b){ return !b ? a : gcd(b, a % b); } bool isGoodArray(vector<int>& nums){ int g = nums[0]; for (int i = 1; i < nums.size(); i++) g = gcd(g, nums[i]); return g == 1; } }; main(){ Solution ob; vector<int> v = {12,23,7,5}; cout << (ob.isGoodArray(v)); }
输入值
{12,23,7,5}
输出结果
1