Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 K보다 작은 곱을 갖는 모든 하위 시퀀스 계산

<시간/>

이 튜토리얼에서는 곱이 K보다 작은 부분 시퀀스의 수를 찾는 프로그램에 대해 논의할 것입니다.

이를 위해 음이 아닌 배열과 값 k가 제공됩니다. 우리의 임무는 k보다 작은 곱을 갖는 배열의 모든 하위 시퀀스를 찾는 것입니다.

예시

#include <bits/stdc++.h>
using namespace std;
//counting subsequences with product
//less than k
int count_sub(vector<int> &arr, int k){
   int n = arr.size();
   int dp[k + 1][n + 1];
   memset(dp, 0, sizeof(dp));
   for (int i = 1; i <= k; i++) {
      for (int j = 1; j <= n; j++) {
         dp[i][j] = dp[i][j - 1];
         if (arr[j - 1] <= i && arr[j - 1] > 0)
            dp[i][j] += dp[i/arr[j-1]][j-1] + 1;
      }
   }
   return dp[k][n];
}
int main(){
   vector<int> A;
   A.push_back(1);
   A.push_back(2);
   A.push_back(3);
   A.push_back(4);
   int k = 10;
   cout << count_sub(A, k) << endl;
}

출력

11