圈子,問最後留下的是原來第幾號的那位。
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]);
}
兩年前念書的時候寫的,獻醜了!