标签:font include return log 算法 算法思想 i++ ret main
约瑟夫问题描述:
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 }
标签:font include return log 算法 算法思想 i++ ret main
原文地址:http://www.cnblogs.com/pertinencec/p/6244753.html