코드에서 작업의 수를 계산하려고

galmquist :

나는 최근에 세지의 알고리즘 책을 읽고있다, 그리고 나는 확실히 이해하지 못했다 예를 건너 왔어요 ...

문제의 코드

이 코드를 사용하여, 세지는 경우 문이 정확하게 실행되는 것을 언급 N × (N-1) (N-2) / 6 번 .

나는 꽤 나는 각, 삼중 중첩 루프가있는 것을 볼 수 .... 그 이유를 이해하지 못하는 상단 증가 바운드, 그런데 왜 값이 여섯으로 나눈?

J4BEZ :

설명이 조금 치즈 맛이 나는 할 수있다, 그래서 나는, 나는 수학에 좋지임을 양해 부탁드립니다.

'하기 위해 if(a[i] + j[i] + k[i])코드 내측 문'변수를 실행 I 배열 루프 삼중에서 'A'인덱스 아웃 포인트 명령문의 조건에 적합해야 J 및 K 것이 (0<= i <j<k <N)바로?

예를 들어, N은 4이다 여기에 이미지 설명을 입력선택 네 개의 세하지만 4 'I'에서 선택되는 경우 상기 화상에 나타낸 바와 같이, 그 진행 상황을 볼 수있는 순열 (4P3 = 4 ^ 3)를 통해 제공 될 것으로 보인다 용 루프 'J'의 차단 (j = 4 + 1, J <4; J ++).

우리는 횟수를 얻을 수 없다 그래서 if 문은 간단한 순서로 실행됩니다.

우리에게 필요한 것은입니다 조합 ( 의 nCr ) .

인덱스 N-0에서 1로 흐를 때, 케이스 (i, j, k)의 개수 즉 충족 i < j < k(=> 실행 문 경우) 화학식 NC3함으로써 얻을 수있다.

여기에 이미지 설명을 입력이 식에 의하면, 문 경우 정확하게 N × (N-1) (N-2) / 6 번 실행할

난 당신이 잘 이해 희망하고 그렇게하지 않으면 댓글을 남겨주세요! 좋은 하루 되세요!

추천

출처http://43.154.161.224:23101/article/api/json?id=280154&siteId=1