>  기사  >  백엔드 개발  >  1부터 n까지의 모든 조합의 곱의 합

1부터 n까지의 모든 조합의 곱의 합

WBOY
WBOY앞으로
2023-09-06 16:01:061218검색

1부터 n까지의 모든 조합의 곱의 합

1부터 n까지 숫자를 하나씩 취하다 보면 여러 가지 조합이 나올 수 있어요.

예를 들어 한 번에 하나의 숫자만 선택하면 조합 수는 nC1이 됩니다.

한 번에 두 개의 숫자를 취하면 조합 수는 nC2가 됩니다. 따라서 총 조합 수는 nC1 + nC2 +… + nCn이 됩니다.

모든 조합의 합을 구하려면 효율적인 방법을 사용해야 합니다. 그렇지 않으면 시간과 공간 복잡도가 매우 높아지게 됩니다.

문제 설명

1부터 N까지 매번 얻은 모든 숫자 조합의 곱의 합을 구합니다.

N은 주어진 숫자입니다.

들어가세요

으아아아

출력

으아아아

설명

으아아아

들어가세요

으아아아

출력

으아아아

무차별 접근 방식

무차별 방식은 모든 조합을 재귀적으로 생성하고 해당 제품을 찾은 다음 해당 합계를 찾는 것입니다.

재귀 C++ 프로그램 예

다음은 모든 조합(1부터 N까지)에서 매번 얻은 곱의 합을 구하는 재귀 C++ 프로그램입니다

으아아아

출력

으아아아

이 접근 방식의 재귀 트리를 생성하면 시간 복잡도가 기하급수적으로 증가한다는 것을 알 수 있습니다. 또한 많은 단계가 반복되어 프로그램이 중복되므로 매우 비효율적입니다.

효율적인 접근 방식(동적 프로그래밍)

효과적인 해결책은 동적 프로그래밍을 사용하고 중복을 제거하는 것입니다.

동적 프로그래밍은 문제를 하위 문제로 나누고 하위 문제를 해결하고 반복을 피하기 위해 결과를 저장하는 기술입니다.

동적 프로그래밍을 사용한 C++ 프로그램 예

아래는 동적 프로그래밍을 사용하여 한 번에 (1부터 N까지) 모든 조합의 합을 구하는 C++ 프로그램입니다.

으아아아

출력

으아아아

결론

이 글에서는 1부터 N까지의 모든 조합의 곱의 합을 구하는 문제에 대해 논의했습니다.

우리는 기하급수적인 시간 복잡도를 갖는 무차별 접근 방식으로 시작한 다음 동적 프로그래밍을 사용하여 수정했습니다. 두 방법 모두에 대한 C++ 프로그램도 제공됩니다.

위 내용은 1부터 n까지의 모든 조합의 곱의 합의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 tutorialspoint.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제