1. 程式人生 > >約瑟夫環解決方案

約瑟夫環解決方案

還要 print span and clas 每次 code logs led

 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,每次殺人前都要檢查一遍是否還要繼續殺人了,因為要留下最後一個人。

約瑟夫環解決方案