C:m围圈报数,报到n的人出列,循环报数,求最后剩的那个人

    xiaoxiao2021-03-25  163

    //约瑟夫问题Nren void main() {  printf("约瑟夫问题!\n");  int array[100];  int m; //all  int n; //need go out  int count=0, remain;  printf("how many people in this sequence?\n");  scanf_s("%d",&m);  int i = 0;  for (; i < m; i++) {   array[i] = i+1;  }  remain = m;  printf("who need be delete?\n");  scanf_s("%d",&n);  int p = 0;//记录当前  while (remain > 1) {   for (i = p%m; count < n;) {        if (array[i] != 0)     count++;    i = (i + 1) % m;   }   if (count == n) {    int t = (i + m - 1) % m;    printf("%d出列\n",array[t]);    array[t] = 0;    remain--;    count = 0;    p = i;   }  }  for (i = 0; i < m; i++)   if (array[i] != 0)    printf("剩下了%d号\n",array[i]); }
    转载请注明原文地址: https://ju.6miu.com/read-3104.html

    最新回复(0)