约瑟夫问题求解
2017-01-03 14:19
232 查看
约瑟夫问题描述:
41个人坐一圈,轮流报数从1到3,数到3的人,自动出局,最后没出局的两人是谁?
算法思想:
①坐一圈 采用循环数组 i = i % LEN;
②有出局的和没出局的 采用个计数器 一个记录 在所有人的位置,
另一个记录 在未出局的人中的位置;
41个人坐一圈,轮流报数从1到3,数到3的人,自动出局,最后没出局的两人是谁?
算法思想:
①坐一圈 采用循环数组 i = i % LEN;
②有出局的和没出局的 采用个计数器 一个记录 在所有人的位置,
另一个记录 在未出局的人中的位置;
1 1 #include<stdio.h> 2 2 #define LEN 41 3 3 #define STEP 3 4 4 int main(){ 5 5 int pos = 1,count=0,i=0; 6 6 int arr[LEN]; 7 7 for(i=0;i<LEN;i++)arr[i]=0; 8 8 for(i=0;count < LEN - LEN % STEP;i++){ //i外层 在数组中的位置 9 9 if(0 == arr[i%LEN]){ 10 10 if(3 == pos){ //pos 活着的人口中的数字 11 11 arr[i % LEN] = 1; 12 12 count++; //count 作为 死亡人数统计 确保 循环可以正常结束 13 13 pos = 0; 14 14 } 15 15 pos++; 16 16 } 17 17 } 18 18 for(i=0;i<LEN;i++)if(0 == arr[i])printf("%d\n",i+1); 19 19 return 0; 20 20 }
相关文章推荐
- 约瑟夫问题求解(C++)
- 约瑟夫问题各种求解办法
- 约瑟夫问题 求解过程的另一种容易理解方式
- 约瑟夫问题简单求解
- 约瑟夫问题求解算法的设计与实现
- 求解约瑟夫问题
- 【java算法】约瑟夫问题求解
- 约瑟夫问题求解
- 约瑟夫问题C++求解
- 约瑟夫问题的Python和C++求解方法
- 一步一步求解约瑟夫(Joseph)问题
- 约瑟夫问题三种求解方法
- 约瑟夫问题求解
- 三种方法求解约瑟夫环问题
- 数据结构学习中的简单问题(二):用循环链表求解简单约瑟夫问题
- 用循环链表求解约瑟夫问题
- 利用循环链表实现约瑟夫问题的求解
- 证明求解约瑟夫斯问题的二进制左循环算法的正确性
- Java采用循环链表结构求解约瑟夫问题
- 约瑟夫问题求解