检查它在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

以上是 检查它在C ++中是否是一个好的数组 的全部内容, 来源链接: utcz.com/z/351569.html

回到顶部