변형된 요세푸스 문제인데...
타키
질문 제목 : 변형된 요세푸스 문제
질문 요약 :array로 함수를 만들어 요세푸스 문제를 품..
질문 내용 :
int fun1(void)
{
int m[41];
int cnt; // 3번째 대상자를 찾기 위한 변수
int live=41; // 생존자 숫자
int i, c = 0;
int val1, val2;
printf(n값을 입력하시오\n);
scanf(%d,&val1);
printf(k값을 입력하시오\n);
scanf(%d,&val2);
for( i = 0 ; i 41 ; i++ )
m[i] = i+1;
while( live 2 )
{
cnt = 0;
while( 1 )
{
if( m[c] != -1 ) cnt++;
if( cnt != 0 ) {
printf(Killed %d\n, c+1);
m[c] = -1;
live--;
break;
}
else if(cnt == 0 ){
return 0;
}
c = (c+1)%41;
}
}
for( i = 0 ; i 41 ; i++ )
if( m[i] != -1 )
printf(LIVE : %d\n, i+1);
}
배열로 된 함수 부분인데 n명(요세푸스 문제에서는 41명이지만) 그리고 k명 건너서(요세푸스 문제에서는 3명)하나씩 제거해 나가는코드를 짜려고 해요.
예를 들면n=4k=2일 경우3번째 사람과 2번째 사람은 죽어서 1과 4가 남는 프로그램...
따라서 n값과 k 값에 따라코드가 변할 수 있게 짜야 하는데 그걸 잘 모르겠어요..