猴子选大王 (约瑟夫环)(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>
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);//猴子大王 } }
结果如下:


浙公网安备 33010602011771号