ジョセフ再帰アルゴリズム
953 ワード
ジョセフは輪の問題を出して、再帰的な実現方法の問題は以下の通りです:同じ色のトランプは13枚です.1枚目を最後に入れ、一番上の1枚を抽出し、一番上の1枚を最後に入れます.最終結果はA 2 3 4 5 6 7 8 9 10 j Q kが元のカードを求める順番である.
/**********************************************
*Copyright (c) 2013,kevin
* All rights reserved.
*
* :joseph.c
* : 13 。
* , , ,
* 。 A 2 3 4 5 6 7 8 9 10 j Q k
* 。 ,
*
* :0.1
* :kevin
* :2013 9 12
**********************************************/
#include
#include
#define num 13//
#define next 2//
int joseph(int m,int k,int i)
{
if(i==1)
{
return (m+k-1)%m;
}
else{
return (joseph(m-1,k,i-1)+k)%m;
}
}
int main()
{
int i;
int a[num];
int b[num];
printf(" :");
for(i=1;i<=num;i++)
{
a[i-1]=joseph(num,next,i)+1;
printf("%d ",a[i-1]);
}
printf("
:");
for(i=0;i