选猴王

题目:在n个猴王中选出一个猴王,规则是每隔几个淘汰一个,一直循环,直到只剩一个猴子

代码:

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 namespace SuanFa
 6 {
 7     class Program
 8     {
 9         static void Main(string[] args)
10         {
11             //n为输入的猴子的个数,m为每多少个猴子筛选一次
12             //i为猴子的位置,j为筛选猴子的位置
13             int n, count, m, i, j;
14             Console.Write("请输入猴子数:");
15             n = Convert.ToInt32(Console.ReadLine());
16             Console.Write("请输入要筛选的个数:");
17             m = Convert.ToInt32(Console.ReadLine());
18             int[] monkey = new int[n];
19             count = n;  //储存每次筛选后的猴子个数
20             for (i = 0; i < n; i++)
21             {
22                 monkey[i] = 1;
23             }
24             i = 0; j = 0;
25             while (count > 1)
26             {
27                 while(monkey[i%n]==0)
28                 {
29                     i = (i + 1) % n;
30                 }
31                 j = (j + 1) % m;
32                 if (j == 0)
33                 {
34                     monkey[i % n] = 0;
35                     count--;
36                 }
37                 i = (i + 1) % n;
38             }
39             for (i = 0; i < n; i++)
40             {
41                 if (monkey[i] == 1)
42                 {
43                     Console.WriteLine("猴王是第"+(i+1)+"");
44                     break;
45                 }
46             }
47             Console.ReadLine();
48         }
49     }
50 }