题目:选猴王
题目:选猴王
一群猴子有m只,坐在一起选猴王,每只猴子都有一个编号1~m。从n号猴子开始报号,报到r号则踢出;下只猴子继续从第n号开始报,依次循环,则最后剩下的一只猴子就是猴王了,求出这只猴子的编号。
要求使用顺序存储结构或链式结构。
#define DEBUG
#include<stdio.h>
#define TOTAL
#include <iostream.h>
typedef struct monkey
{
unsigned int number;
struct monkey *prev;
struct monkey *next;
} MONKEY;
int main(void)
{
int m,n,r;
cout<<"输入m:";
cin>>m;
cout<<"输入n";
cin>>n;
cout<<"输入r";
cin>>r;
int i;
MONKEY monkeys[m];
MONKEY *ptr;
for (i = 0; i < m; i++)
{
monkeys[i].number = i+1;
monkeys[i].prev = (i == 0) ? &(monkeys[TOTAL-1]) : &(monkeys[i-1]);
monkeys[i].next = (i == TOTAL-1) ? monkeys : &(monkeys[i+1]) ;
}
ptr = monkeys;
do
{
for (i = 2; i <= r; i++)
{
ptr = ptr->next;
}
#ifdef DEBUG
printf( "#%d is deleted.\n", ptr->number );
#endif
ptr->prev->next = ptr->next;
ptr->next->prev = ptr->prev;
ptr = ptr->next;
} while (ptr->next != ptr);
printf( "*****The king is #%d*****\n", ptr->number );
return 0;
}
compiled之后
c:\documents and settings\admin\桌面\c++\选猴王\(⊙o⊙)哦.cpp(30) : error C2057: expected constant expression
c:\documents and settings\admin\桌面\c++\选猴王\(⊙o⊙)哦.cpp(30) : error C2466: cannot allocate an array of constant size 0
c:\documents and settings\admin\桌面\c++\选猴王\(⊙o⊙)哦.cpp(30) : error C2133: 'monkeys' : unknown size
人有三个错,希望大家帮忙改改。