0
데이터 구조 클래스에있어 강사가 제공 한 예제 데이터를 재현 할 수 없습니다. 문제는 사용자가 제공 한 회원 수, 단계 간격 및 시작 위치와 관련된 고전적인 요세푸스 문제입니다.Josephus 순열을위한 강사의 출력을 재현 할 수 없습니다.
구체적으로 말하자면, 23 세부터 99 세까지 5 세가되는 사람은 마지막 사람으로 서 84 명을 남겨 두어야한다고 들었습니다.
내가 가지고 올 : 65 내가 도망 다시이 생산 (23)의 간격으로 5에서 시작, 99명되었을 수도 입력을 생각 : (42)
내 할당 솔루션은 원형 연결리스트를 포함, 그러나이 코드는 모든 경우에 동일한 출력을 생성합니다.
#include <stdio.h>
int josephus(int n, long k)
{
if (n == 1)
return 1;
else
/* The position returned by josephus(n - 1, k) is adjusted because the
* recursive call josephus(n - 1, k) considers the original position
* k%n + 1 as position 1 */
return (josephus(n - 1, k) + k-1) % n + 1;
}
int main()
{
int n = 99;
int k = 23;
printf("The chosen place is %d\n", josephus(n, k) + 5);
return 0;
}
다시 한번 감사드립니다.