古詩詞大全網 - 成語故事 - 數據結構中的約瑟夫環問題用C語言怎麽編寫出來啊?

數據結構中的約瑟夫環問題用C語言怎麽編寫出來啊?

題目:有n個人圍成壹圈,順序排號。從第壹個人開始報數(從1到3報數),凡報到3的人退出

 圈子,問最後留下的是原來第幾號的那位。

1. 程序分析:這是壹個比較經典的算法--約瑟夫環問題.

2.個人分析: 算法比較經典,對於這樣的問題本應該使用鏈表的形式會比較容易.約瑟夫環算法

則體現了使用數組來完成鏈表該完成的功能,雖然形式上完全不相同,但卻求出了

相同的結果.有異曲同工之妙.總之我個人認為是數組中非常經典的算法了.希望本

人寫的代碼不會叫大家啐罵!

3.程序源代碼:

#include <stdio.h>

#define N 50

#define S 3

void main()

{

int a[N];

int i,k;

int sum=N;

k=0;

for(i=0;i<N;i++)

a[i]=i+1;

for(i=0;i<N;i++)

printf("%-4d",a[i]);

printf("\n");

for(i=0;;i++)

{

if(sum==1)

break;

if(a[i%N]!=0)

{

k++;

}

if(k==S)

{

k=0;

//printf("%4d",a[i%N]);

a[i%N]=0;

sum--;

}

}

for(i=0;i<N;i++)

if(a[i]!=0)

printf("\n最後壹個數為:%d\n",a[i]);

}

兩年前念書的時候寫的,獻醜了!