猴子选大王 (约瑟夫环)(c#)

猴子选大王问题:

一堆猴子都有编号,编号是1,2,3 ...m ,这群猴子(m个)按照1到m的顺序围坐一圈,

从第1开始数,每数到第n个,该猴子就要离开此圈,这样依次下来,直到圈中只剩下最后一只猴子,则该猴子为大王。

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <div>
            猴子总数M:<asp:TextBox ID="hzz" runat="server"></asp:TextBox>
            出列的猴子N:<asp:TextBox ID="clhz" runat="server"></asp:TextBox>
            <asp:Button runat="server" ID="sa" Text="猴子选大王" OnClick="sa_Click" />
            猴子大王:<asp:TextBox ID="hzdw" Enabled="false" runat="server"></asp:TextBox>
        </div>
    </form>
</body>
</html>
Default.aspx
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void sa_Click(object sender, EventArgs e)
    {
        int M = Convert.ToInt32(hzz.Text.Trim());   //总猴子数   M
        int N = Convert.ToInt32(clhz.Text.Trim());  //出来的猴子 N
       
            //总猴子数 M ,数到第 N 个排除。 
            int k = 0;
            for (int i = 2; i <= M; i++)
            {
                k = (k + N) % i;
            }
            hzdw.Text = Convert.ToString(k + 1);//猴子大王
    }
}
Default.aspx.cs

结果如下:

 

posted @ 2019-04-20 16:05  天然白  阅读(839)  评论(0)    收藏  举报