约瑟夫问题(约瑟夫问题)
2022-11-27 20:09:25
•
来源:
导读 大家好,今天小六子来为大家解答以下的问题,关于约瑟夫问题,约瑟夫问题这个很多人还不知道,现在让我们一起来看看吧!1、约瑟夫问题是经典
大家好,今天小六子来为大家解答以下的问题,关于约瑟夫问题,约瑟夫问题这个很多人还不知道,现在让我们一起来看看吧!

1、约瑟夫问题是经典的算法题,大多教材上都有的,以下是我写的,供参考:#include #define N 30int yuesefu1(int data[], int sum, int k){ int i = 0, j = 0, count = 0; while(count < sum - 1) { if(data[i] != 0) /*当前人在圈子里*/ j++; if(j == k) /*若该人应该退出圈子*/ { data[i] = 0; /*0表示不在圈子里*/ count++;/*退出的人数加1*/ j = 0; /*重新数数*/ } i++;/*判断下一个人*/ if(i == sum) /*围成一圈*/ i = 0; } for(i = 0; i < sum; i++) if(data[i] != 0) return data[i];/*返回最后一个人的编号*/}int main(){ int data[N], total, k, i; while(1) { scanf("%d%d", &total, &k); if(total == 0 || k == 0) break; for(i = 0; i < total; i++) data[i] = i + 1; //初始化 printf("%d", yuesefu1(data, total, k)); } return 0;}。
本文分享完毕,希望对你有所帮助。
免责声明:本文由用户上传,如有侵权请联系删除!