Algorithm 1. QUEUESTUFF(n)
Input: Integer n
1) Let Q = an empty Queue
2) For i = 1 to n
3) Q.Enqueue(i)
4) End For
5) For i = 1 to n-1
6) Let X = Q.Dequeue()
7) End For
8) Let X = Q.Dequeue()
Output: The contents of X
Q.Enqueue(X) add item X to the queue
X = Q.Dequeue() extracts an item from the queue and assigns it to X.
If the queue is empty then -999 is returned.
분석하는 알고리즘을 출력 N-1 등 그러나 제N> 0이 이해하면 의사
동일 할 것이다 N = 6, X가 출력 될 것이며, 어떤 N < 만약 0? 루프가 1에서 음수로 갈 수 있습니까? 그렇지 않다면 ... 저는 For 루프 중 어느 것도 실행되지 않을 것이고, 우리에게 -999의 출력을 줄 것이라고 믿습니다 (대기열이 비어 있음).
그러나 루프가 음수가 될 수있는 경우 n = -2라고 가정합니다. 대기열은 {1, 0, -1, -2}입니다. 그런 다음 1에서 -3 배를 dequeue해야합니다 ... Dequeue가 적용된 마지막 항목 인 X 만들기 -2. 이제이 알고리즘은 무엇을 반환합니까? 꽤 많은 n = X가 맞습니까?
라인1, 2, 3, ..., n
5~7가 하나씩 (FIFO 추출된다 : 1 세대 최초하여 N> 0 큐가 다음과 같은 순서로 작성한다 (라인 1~4) 용
루프가 음수로 갈 수 있고 올바른 경우 – isaach1000
우리가 (int i = 1; true; i--)를 가정하면 큐에 4 개의 숫자가 있고 5 개의 숫자를 큐에서 제거 할 수 없으므로 x가 잘못 될 수 있습니다. = -999 –
그리고 질문에 당신은 n> 0이면이 알고리즘이 n-1을 출력한다는 것을 이해합니다. 8 번째 줄을 실행 하시겠습니까? –