约瑟夫环解决方案

 1 #include<stdio.h>
 2 /*
 3 *  your own thougt is always best!!
 4 *
 5 */
 6 int couldkill(int *array);//return the array alive whitch is still alive sum;
 7 void kill(int *array);//kill the choose one 
 8 int findalive(int *p);//fand the last one who is still alive.
 9 
10 int main()
11 
12 {
13     int a[33];int i=0,j=0,count=0;
14     for(;i<33;i++)
15     {
16         a[i]=1;
17     }
18     
19     kill(a);
20     
21     printf("%d",findalive(a));        
22     
23     
24 }
25 int couldkill(int *array)
26 {    int i=0;int alive=0;
27 
28     for(;i<33;i++)
29     {
30         if(array[i]==1)
31         {
32             alive++;
33         }
34     
35     }
36     return alive;
37 }
38 
39 void kill(int *array)
40 {
41     int i=0,j=0,count=0;
42     for(;i<33 && couldkill(array)!=1;i++)
43     {    
44         if(array[i]!=0)
45         {
46             count++;
47         }
48 
49         if(count==7)
50         {    
51             count=0;
52             array[i]=0;
53             printf("%d is killed\n",i+1);
54         }
55         if(i==32)i=-1;
56 
57     }    
58 
59 }
60 int findalive(int *p)
61 {    int index,i;
62     for(i=0;i<33;i++)
63     {
64         if(p[i]==1)
65         {
66             index=i+1;
67             return index;
68         }
69     }
70 
71 }

稍微的说明一下,在这个初始化的33个数组中,1 代表活着,0代表死亡,每次到7的时候,就把该元素的值置为0,每次杀人前都要检查一遍是否还要继续杀人了,因为要留下最后一个人。

 

转载于:https://www.cnblogs.com/coversky/p/7294149.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值