用数组实现约瑟夫的问题,求指教!
用数组实现约瑟夫的问题,求指教!不要用链表做
[解决办法]
#include <stdio.h>#define PERSON 10 //总共多少人#define COUNT 8 //第几个人出列static void init(int num[], int len) //数组下标加1,num数组从1开始{ int i; for(i = 0; i < len; i++) num[i] = i + 1;}void Josephus(void){ int num[PERSON], remain = PERSON, step = 1, i = 0; init(num, PERSON); while(remain > 0){ if(step != COUNT && num[i] != -1){ step++; } else if(step == COUNT && num[i] != -1){ printf("%d killed!\n", num[i]); num[i] = -1; // 出列的置位为-1 step = 1; remain--; } i++; i %= PERSON; }}int main(void){ Josephus(); return 0;}