배열을 두 부분으로 나누어 두 부분의 평균이 같도록하려면 어떻게합니까? 각 파티션에는 배열에서 인접하지 않은 요소가 포함될 수 있습니다. 제가 생각할 수있는 유일한 알고리즘은 기하 급수적입니다. 더 잘 할 수 있을까요?두 부분의 평균이 같도록 배열을 두 부분으로 나누는 방법은 무엇입니까?
답변
이 문제를 sum-subset problem (cached here)으로 줄일 수 있습니다. 여기에 아이디어가 있습니다.
A
을 배열로 지정하십시오. S = A[0] + ... + A[N-1]
을 계산하십시오. 여기서 N
은 A
입니다. k
은 1
에서 N-1
까지이며, T_k = S * k/N
이라고합시다. T_k
이 정수인 경우 A
의 하위 집합이 k
이고 그 합은 T_k
입니다. 당신이 이것을 할 수 있다면, 당신은 끝났습니다. k
에 대해이 작업을 수행 할 수 없으면 그러한 파티션이 없습니다.
다음은이 접근 방식의 배경입니다. A
의 파티셔닝이 있는데 두 부분의 평균이 같다고 가정하면 의 X
과 y
의 Y
은 파티션입니다 (여기서 x+y = N
). 그런 다음
sum(X)/x = sum(Y)/y = (sum(A)-sum(X))/(N-x)
이 있어야합니다 배열 정수를 포함하기 때문에 그렇게 대수의 약간 왼쪽은 정수,
sum(X) = sum(A) * x/N
을 제공하므로 오른쪽도해야합니다. 이것은 T_k = S * k/N
이 정수 여야한다는 제약을 유발합니다. 유일한 나머지 부분은 크기 k
의 서브 세트의 합으로서 T_k
을 실현하는 것입니다.
입니다. 당신의 증명이 OP의 문제에 대한 부분 집합 합계를 어떻게 줄이는 지 아직 볼 수 없습니다. – soulcheck
내 말은, 당신은 essencially OP의 문제에 대답 할 수있는 부분 집합 합계에 대한 답변을 가지고 있다는 것을 증명했습니다. – soulcheck
@soulcheck 나는 그들이 진정으로 동등한 지에 대해 아직도 숙고하고있다. 대답은 [내가 방금 요청한이 질문] (http://stackoverflow.com/questions/8916539/sum-subset-with-a-fixed-subset-size)에 달려 있다고 생각합니다. – PengOne
- 1. 장면을 두 부분으로 나누는 방법?
- 2. 리터럴을 두 부분으로 나누는 방법
- 3. C에서 GMP lib를 사용하여 mpz_t를 두 부분으로 나누는 방법은 무엇입니까?
- 4. Joomla가 MVC View를 두 부분으로 나누는 이유
- 5. 두 대문자로 나누는 방법은 무엇입니까?
- 6. 화면을 세로로 세 부분으로 나누는 방법은 무엇입니까?
- 7. 분할은 두 부분으로 화면이
- 8. 동등한 부분으로 원을 나누는 방법은 무엇입니까?
- 9. 문제를 이해하기 쉬운 부분으로 나누는 방법은 무엇입니까?
- 10. 이미지를 2 부분으로 나누는 방법은 무엇입니까?
- 11. 행렬을 등호 부분으로 나누는 방법은 무엇입니까?
- 12. 긴 부분을 작은 부분으로 나누는 방법은 무엇입니까?
- 13. 은 평균이 f를 두 변수
- 14. 두 요소간에 나머지 높이를 나누는 방법은 무엇입니까?
- 15. NSMutableDictionary를 두 개의 NSMutableArrays로 나누는 방법은 무엇입니까?
- 16. sql-server 두 테이블을 나누는 방법은 무엇입니까?
- 17. 시퀀스를 술어로 두 조각으로 나누는 방법은 무엇입니까?
- 18. 화면을 두 개의 버튼으로 나누는 방법은 무엇입니까?
- 19. 가중 평균이 같은 두 개의 하위 배열을 찾습니다.
- 20. 화면을 두 부분으로 나눕니다.
- 21. 어떻게 이미지를 두 부분으로 분리 할 수 있습니까? 한 부분의 대비를 높이고 다른 부분의 대비를 줄이는 방법은 무엇입니까?
- 22. PHP 코드의 두 부분의 차이점
- 23. 거대한 클래스를 두 개로 나누는 도구
- 24. 어떻게 데이터 세트를 똑같이 두 부분으로 나눌 수 있습니까?
- 25. C++ 문자열을 두 부분으로 나누기
- 26. 문자열을 두 부분으로 나누기 (REALBASIC)
- 27. 테이블 셀을 두 부분으로 나누기
- 28. 두 배열을 반복하는 방법
- 29. Android, ListView 항목을 세 부분으로 나누는 방법?
- 30. SQL 쿼리 결과를 작은 부분으로 나누는 방법
솔직히 말해서 숙제 문제입니까? –
무엇을 시도 했습니까? 작동 했나요? 예제 입출력 예제가 있습니까? –
이것은 인터뷰 질문처럼 쉽게 들리지는 않습니다. – BrokenGlass