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

C++에서 허용되는 반복이 있는 배열 요소를 사용하여 N으로 합하는 방법

<시간/>

이 문제에서는 정수 배열과 숫자 N이 주어집니다. 우리의 임무는 배열의 요소를 추가하여 N이 생성될 수 있는 총 방법 수를 계산하는 것입니다. 모든 조합과 반복이 허용됩니다.

문제를 이해하기 위해 예를 들어보겠습니다.

입력

arr ={1, 3, 5} N =6

출력

8

설명

방법은 -

<이전>5+1, 1+5, 3+3, 3+1+1+1, 1+3+1+1, 1+1+3+1, 1+1+1+3, 1+1 +1+1+1+1

이 문제를 해결하려면 모든 유형의 조합이 다르게 취급되므로 다른 접근 방식을 사용해야 합니다. 따라서 숫자가 배열의 4개 요소의 합인 경우 4가지 다른 방법을 고려해야 합니다(예제 참조). 이러한 문제를 해결하려면 동적 프로그래밍 방식을 사용해야 하며 아래 프로그램에서 구현을 보여줍니다.

예시

#include #include 네임스페이스 사용 std;int arraySumWays(int array[], int size, int N){ int count[N + 1]; memset(count, 0, sizeof(count)); 개수[0] =1; for (int i =1; i <=N; i++) for (int j =0; j =array[j]) count[i] +=count[i - array[j ]]; return count[N];}int main() { int array[] ={1, 5, 6}; 정수 크기 =sizeof(배열) / sizeof(배열[0]); 정수 N =7; cout<<"배열 요소의 합을 사용하여 "< 

출력

배열 요소의 합을 사용하여 7을 생성할 수 있는 총 방법은 6입니다.