• 求解约瑟夫问题


     1/*
     2求解约瑟夫问题:n个猴子要选大王,方法是:所有猴子安1,2,,n编号围坐一圈,
     3从第一号开始报数,凡报到m号的退出圈外,如此循环报数,直到圈内剩下一只猴子(大王)
     4*/

     5
     6#include "stdafx.h"
     7#include <stdio.h>
     8#define n 10  //猴子的数量
     9#define m 4   //报到m号的退出圈外
    10
    11void main()
    12{
    13    int a[n],i,count=0,n1=0//a[n]猴子的数量
    14
    15    printf("出队前:");
    16    for(i=0;i<n;i++)
    17    {
    18        a[i]=i+1;
    19        printf("%d ",a[i]);
    20    }

    21
    22    printf("\n出队后:");
    23
    24    while(n1<n) //n1用来计算退出到圈外的猴子个数
    25    {
    26        for(i=0;i<n;i++)
    27        {
    28            if(a[i]!=0)  //没有退出到圈外的猴子报数
    29                count++//报数 
    30            if(count==m) //报到m号的猴子退出
    31            {
    32                printf("%d ",a[i]);
    33                a[i]=0;  //报到m号的猴子退出,即设定a[i]=0
    34                count=0//重新报号
    35                n1++;    //有一个猴子退出
    36            }

    37        }

    38    }

    39
    40}
  • 相关阅读:
    Linux操作系统是如何工作的?破解操作系统的奥秘
    SSIS Send Mail
    数据库邮件
    Script component 用法
    OleDB Destination 用法
    OLE DB Command transformation 用法
    Conditional Split component 用法
    Execute Sql Task 的Result DataSet如何返回
    binary 和 varbinary 用法全解
    TSQL HASHBYTES 用法
  • 原文地址:https://www.cnblogs.com/yuxi/p/645370.html
Copyright © 2020-2023  润新知