주어진 합계 'k'를 생성하는 고유 숫자 개수 최대화

템플릿 소년

이 동적 프로그래밍 문제에 대한 도움이 필요합니다.

양의 정수가 주어지면 k합계가되는 고유 양의 정수의 최대 수를 찾습니다 k. 예를 들어 6 = 1 + 2 + 3이므로 답은 3이되고, 5 + 1 또는 4 + 2는 2가됩니다.

가장 먼저 생각하는 것은 하위 문제를 찾아야한다는 것입니다. 따라서에 대한 최대 합계 k를 찾으려면보다 작은 값에 대한 최대 합계를 찾아야합니다 k. 따라서 값을 반복하고 해당 값에 1 -> k대한 최대 합계를 찾아야합니다.

나를 혼란스럽게하는 것은 공식을 만드는 방법입니다. M(j)합계가에 해당하는 고유 값의 최대 수로 정의 할 수 j있지만 실제로 공식을 어떻게 작성합니까?

내가 지금까지 가지고있는 것에 대한 내 논리가 정확하고 누군가이 단계별로 작업하는 방법을 설명 할 수 있습니까?

Nayuki

동적 프로그래밍이 필요하지 않습니다. 예를 들어 보겠습니다.

50 = 50
50 = 1 + 49
50 = 1 + 2 + 47  (three numbers)
50 = 1 + 2 + 3 + 44  (four numbers)
50 = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 14  (nine numbers)

9 개의 숫자는 우리가 할 수있는 한 멀리 있습니다. 10 개의 숫자를 사용하면 합계는 적어도 1 + 2 + 3 + ... + 10 = 55가되며 50보다 큽니다. 따라서 불가능합니다.

실제로, 정확히 n 개의 고유 한 양의 정수를 사용한다면 , 그러한 합계를 가진 가장 낮은 숫자는 1 + 2 + ... + n = n ( n +1) / 2입니다. 2 차를 풀면 M ( k )이 대략 sqrt (2 k ) 임을 알 수 있습니다 .

따라서 알고리즘은 숫자 k 를 취하고 더 이상 할 수 없을 때까지 1, 2, 3 등을 뺀 다음 1 만큼 감소시키는 것입니다. C의 알고리즘 :

int M(int k) {
    int i;
    for (i = 1; ; i++) {
        if (k < i) return i - 1;
        else k -= i;
    }
}

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

주어진 숫자의 제수이고 그 합이 최소 인 세 개의 숫자를 찾습니다.

분류에서Dev

합이 주어진 정수 k와 같지 않아야하는 1에서 n 숫자의 최대 합

분류에서Dev

주어진 숫자 k를 제외하고 효율적으로 n 개의 숫자 배열 만들기

분류에서Dev

주어진 범위에서 숫자의 최대 계수 합계

분류에서Dev

주어진 숫자 N은 가능한 최대 숫자를 얻기 위해 K 자리를 제거합니다.

분류에서Dev

주어진 템플릿 인수가 유형 정의를 제공하는 경우 sfinae로 생성자를 활성화합니다.

분류에서Dev

3 개의 값을 취하고 3 개의 숫자의 최대 값과 평균을 계산하는 파이썬 함수를 만들어야합니다. 내 코드가 실행되지 않고 이유를 모르겠습니다.

분류에서Dev

postgres에서 그룹당 최소 k 개의 발생이있는 고유 값의 수를 계산합니다.

분류에서Dev

주어진 숫자의 소인수로부터 고유 한 정수를 생성하는 방법 / 알고리즘이 있습니까?

분류에서Dev

주어진 숫자 시퀀스가 최대 K로 각 부분으로 분할 될 수있는 방법의 수를 세십시오.

분류에서Dev

주어진 숫자의 합계를 구하는 요소 찾기

분류에서Dev

주어진 정수 목록에서 합계> = 목표 숫자 인 숫자 세트를 찾아 각 세트가 목표를 초과하는 총량을 최소화합니다.

분류에서Dev

R을 사용하여 대소 문자를 무시하고 주어진 파일에서 주어진 단어가 얼마나 자주 발생하는지 계산

분류에서Dev

함수의 인수로 주어진 4 개의 숫자에 대해 모든 숫자에 대해 결합 된 최대 주파수를 가진 숫자를 찾아야합니까?

분류에서Dev

Python에서 고정 된 최소 단계 수로 주어진 숫자로 이동 하시겠습니까?

분류에서Dev

주어진 숫자를 확인하는 알고리즘은 주어진 배열의 조합의 합계입니다.

분류에서Dev

주어진 숫자를 만드는 데 필요한 최소 자릿수 찾기

분류에서Dev

R-dplyr-열별로 그룹화하고 주어진 그룹에 대해 NA 만있는 경우 NA를 유지하는 합계를 계산합니다.

분류에서Dev

O (1) 복잡성으로 주어진 범위에서 숫자의 배수를 계산합니까?

분류에서Dev

어떻게 해결할 수 있습니까? 두 숫자에 대수를 수행하는 생성자에서 메서드를 얻으려고합니다.

분류에서Dev

주어진 n에 대한 합계를 계산하는 (재귀 적) 함수

분류에서Dev

주어진 한도 내에서 최대 합계를 얻기 위해 숫자 목록을 결합합니다.

분류에서Dev

최고 점수 합계를 찾기 위해 최소 및 최대를 최적화하는 방법

분류에서Dev

주어진 숫자의 밑이 2 인 로그를 계산하는 함수 작성

분류에서Dev

Collections.shuffle ()을 사용하여 주어진 숫자 모음의 백만 개의 고유 순열을 계산합니까?

분류에서Dev

주어진 정렬 된 문자열 2 개를 정렬하는 함수 생성

분류에서Dev

주어진 숫자의 합을 이루고 일련의 일반 제약 조건을 준수하는 임의의 자연수 생성

분류에서Dev

주어진 숫자의 합을 이루고 일련의 일반 제약 조건을 준수하는 임의의 자연수 생성

분류에서Dev

주어진 숫자와 같을 수있는 연속 된 3 자리 숫자를 모두 인쇄합니다.

Related 관련 기사

  1. 1

    주어진 숫자의 제수이고 그 합이 최소 인 세 개의 숫자를 찾습니다.

  2. 2

    합이 주어진 정수 k와 같지 않아야하는 1에서 n 숫자의 최대 합

  3. 3

    주어진 숫자 k를 제외하고 효율적으로 n 개의 숫자 배열 만들기

  4. 4

    주어진 범위에서 숫자의 최대 계수 합계

  5. 5

    주어진 숫자 N은 가능한 최대 숫자를 얻기 위해 K 자리를 제거합니다.

  6. 6

    주어진 템플릿 인수가 유형 정의를 제공하는 경우 sfinae로 생성자를 활성화합니다.

  7. 7

    3 개의 값을 취하고 3 개의 숫자의 최대 값과 평균을 계산하는 파이썬 함수를 만들어야합니다. 내 코드가 실행되지 않고 이유를 모르겠습니다.

  8. 8

    postgres에서 그룹당 최소 k 개의 발생이있는 고유 값의 수를 계산합니다.

  9. 9

    주어진 숫자의 소인수로부터 고유 한 정수를 생성하는 방법 / 알고리즘이 있습니까?

  10. 10

    주어진 숫자 시퀀스가 최대 K로 각 부분으로 분할 될 수있는 방법의 수를 세십시오.

  11. 11

    주어진 숫자의 합계를 구하는 요소 찾기

  12. 12

    주어진 정수 목록에서 합계> = 목표 숫자 인 숫자 세트를 찾아 각 세트가 목표를 초과하는 총량을 최소화합니다.

  13. 13

    R을 사용하여 대소 문자를 무시하고 주어진 파일에서 주어진 단어가 얼마나 자주 발생하는지 계산

  14. 14

    함수의 인수로 주어진 4 개의 숫자에 대해 모든 숫자에 대해 결합 된 최대 주파수를 가진 숫자를 찾아야합니까?

  15. 15

    Python에서 고정 된 최소 단계 수로 주어진 숫자로 이동 하시겠습니까?

  16. 16

    주어진 숫자를 확인하는 알고리즘은 주어진 배열의 조합의 합계입니다.

  17. 17

    주어진 숫자를 만드는 데 필요한 최소 자릿수 찾기

  18. 18

    R-dplyr-열별로 그룹화하고 주어진 그룹에 대해 NA 만있는 경우 NA를 유지하는 합계를 계산합니다.

  19. 19

    O (1) 복잡성으로 주어진 범위에서 숫자의 배수를 계산합니까?

  20. 20

    어떻게 해결할 수 있습니까? 두 숫자에 대수를 수행하는 생성자에서 메서드를 얻으려고합니다.

  21. 21

    주어진 n에 대한 합계를 계산하는 (재귀 적) 함수

  22. 22

    주어진 한도 내에서 최대 합계를 얻기 위해 숫자 목록을 결합합니다.

  23. 23

    최고 점수 합계를 찾기 위해 최소 및 최대를 최적화하는 방법

  24. 24

    주어진 숫자의 밑이 2 인 로그를 계산하는 함수 작성

  25. 25

    Collections.shuffle ()을 사용하여 주어진 숫자 모음의 백만 개의 고유 순열을 계산합니까?

  26. 26

    주어진 정렬 된 문자열 2 개를 정렬하는 함수 생성

  27. 27

    주어진 숫자의 합을 이루고 일련의 일반 제약 조건을 준수하는 임의의 자연수 생성

  28. 28

    주어진 숫자의 합을 이루고 일련의 일반 제약 조건을 준수하는 임의의 자연수 생성

  29. 29

    주어진 숫자와 같을 수있는 연속 된 3 자리 숫자를 모두 인쇄합니다.

뜨겁다태그

보관