C语言实现猴子选大王(约瑟夫问题)



这里使用数组模拟循环链表

#include
int main()
{
 int leftCount = 15;  //剩余猴子的数量
 int countNum = 0;   //目前数到了第几个
 int index = 0;      //定义当前数组的下标从0开始。
 int number = 7;   //数到第七个猴子就退出
 int a[15];    //一共15个猴子
 int k, i;    
 //先初始化,让所有的都为1
 for(i = 0; i < 15; i++)
 {
  a[i] = 1;
 }

 //然后每踢出去一个就在剩下的总数里减一,
 //那么当剩下的总数是一的时候,
 //那么就说明找到了已经找到了大王
 while(leftCount != 1)
 {
   //当元素是1的时候就进行计数,
   //当这个数量达到7的时候就说明,该把第七个踢出去了
   if(a[index] == 1)
   {
    
    //如果当前剩余猴子的数量大于1,
    //然后标记还为1,那么就在计数器中加1
    countNum++;
    
    //计数器的数和设定被踢出的猴子的数目相同的时候,
    //踢出猴子,把标记改为0
    if(countNum == 7){
     countNum = 0;           //刷新计数器,初始化为0

你可能感兴趣的:(C,&&,C++,算法)