Count-Out Puzzle NME2快速算法CODE :)

来源: 网恋无罪 2012-06-20 13:44:01 [] [博客] [旧帖] [给我悄悄话] 本文已被阅读: 次 (8146 bytes)
本文内容已被 [ 网恋无罪 ] 在 2012-06-21 08:06:35 编辑过。如有问题,请报告版主或论坛管理删除.

http://bbs.wenxuecity.com/math/1728230.html

http://bbs.wenxuecity.com/znjy/1728446.html

NME2=非数学小学二年级 :)

NME2 和下面的CODE得到同样结果, 但程序更初等,更直接. 因为没有实际DELETE,可以用间单ARRAY,而不用LIST.

Compile test2.cs with C-sharp to test2.exe

C:\\Windows\\Microsoft.NET\\Framework64\\v4.0.30319\\csc test2.cs

test2.cs:

using System;
using System.Collections.Generic;

class Test
{

static void Main()
{
   func(25,7);
}
// n : total number of people
// m : every m th person is removed. m

public static void func(int n, int m) {
        List people = new List\ ();
        for (int i = 1; i <= n; i++)
        {
            people.Add(i.ToString());
        }
       

        // Continue loop through the n slots again and again, until only one person is left (remove n-1 people);
        // as looping through, count the person  to m (where the slot is not null, skip null since it indicates person removed) ;
        // remove every m person by setting the his slot to null ;
 
        int remove=n-1;

        int ct = 0;
       
        while(remove>0)
        {

                for (int index = 0; index < n; index++)
                {
                  if(people[index] != null ) {
                   ct++;
                       if (ct==m)
                       {
                         people[index]=null ;   // flag as removed
                         ct=0;
                         remove--;
                       }
                  }

                  Console.Out.Write( " "+(people[index]==null? "X":people[index]));

              }
    
         Console.Out.WriteLine( "\\nPeople left to Remove "+remove.ToString()+ "\\n");

        }   

        // Now Only the last one person left. find him and display
        for (int index = 0; index < n; index++)
            {
                if(people[index] != null ) {
                    Console.Out.WriteLine("Last Person: " + people[index]);
                }
            }

    }


}

 

run test2.exe output


C:> test2
 1 2 3 4 5 6 X 8 9 10 11 12 13 X 15 16 17 18 19 20 X 22 23 24 25
People left to Remove 21

 1 2 X 4 5 6 X 8 9 10 X 12 13 X 15 16 17 18 X 20 X 22 23 24 25
People left to Remove 18

 1 X X 4 5 6 X 8 9 10 X X 13 X 15 16 17 18 X 20 X X 23 24 25
People left to Remove 15

 1 X X 4 5 X X 8 9 10 X X 13 X 15 16 X 18 X 20 X X 23 24 25
People left to Remove 13

 1 X X X 5 X X 8 9 10 X X 13 X 15 X X 18 X 20 X X 23 24 25
People left to Remove 11

 1 X X X X X X 8 9 10 X X 13 X 15 X X 18 X X X X 23 24 25
People left to Remove 9

 1 X X X X X X 8 9 X X X 13 X 15 X X 18 X X X X 23 24 25
People left to Remove 8

 X X X X X X X 8 9 X X X 13 X 15 X X 18 X X X X 23 X 25
People left to Remove 6

 X X X X X X X 8 9 X X X 13 X 15 X X 18 X X X X X X 25
People left to Remove 5

 X X X X X X X 8 9 X X X 13 X 15 X X 18 X X X X X X X
People left to Remove 4

 X X X X X X X 8 9 X X X 13 X 15 X X 18 X X X X X X X
People left to Remove 4

 X X X X X X X 8 X X X X 13 X 15 X X 18 X X X X X X X
People left to Remove 3

 X X X X X X X 8 X X X X 13 X 15 X X X X X X X X X X
People left to Remove 2

 X X X X X X X 8 X X X X 13 X 15 X X X X X X X X X X
People left to Remove 2

 X X X X X X X 8 X X X X 13 X 15 X X X X X X X X X X
People left to Remove 2

 X X X X X X X X X X X X 13 X 15 X X X X X X X X X X
People left to Remove 1

 X X X X X X X X X X X X 13 X 15 X X X X X X X X X X
People left to Remove 1

 X X X X X X X X X X X X 13 X 15 X X X X X X X X X X
People left to Remove 1

 X X X X X X X X X X X X X X 15 X X X X X X X X X X
People left to Remove 0

Last Person: 15
 

 

所有跟帖: 

酷。不懂就问。 -bangbang9814- 给 bangbang9814 发送悄悄话 (86 bytes) () 06/20/2012 postreply 14:39:39

这CODE的被贴的错格了,难读. -网恋无罪- 给 网恋无罪 发送悄悄话 网恋无罪 的博客首页 (156 bytes) () 06/20/2012 postreply 15:31:07

发表个"算法" 真不容易:) 修改好读些了. -网恋无罪- 给 网恋无罪 发送悄悄话 网恋无罪 的博客首页 (0 bytes) () 06/20/2012 postreply 15:51:32

谢谢。已收藏到google doc里。 -bangbang9814- 给 bangbang9814 发送悄悄话 (0 bytes) () 06/20/2012 postreply 16:43:41

对比一下相应的python3代码 -柯西- 给 柯西 发送悄悄话 柯西 的博客首页 (393 bytes) () 06/20/2012 postreply 22:56:52

再对比一下相应的javascript代码 -柯西- 给 柯西 发送悄悄话 柯西 的博客首页 (497 bytes) () 06/20/2012 postreply 22:59:22

稍微改了一下,更漂亮些。 -柯西- 给 柯西 发送悄悄话 柯西 的博客首页 (580 bytes) () 06/20/2012 postreply 23:16:07

和代码输出结果 -柯西- 给 柯西 发送悄悄话 柯西 的博客首页 (2081 bytes) () 06/20/2012 postreply 23:03:40

太棒了。以后我儿子coding有问题就请教你们几位了。我从20年用过Fortune77 -bangbang9814- 给 bangbang9814 发送悄悄话 (0 bytes) () 06/21/2012 postreply 08:34:55

我从20年用过Fortune77后再也没碰过programing,无法指导儿子。 -bangbang9814- 给 bangbang9814 发送悄悄话 (0 bytes) () 06/21/2012 postreply 08:36:27

请您先登陆,再发跟帖!

发现Adblock插件

如要继续浏览
请支持本站 请务必在本站关闭/移除任何Adblock

关闭Adblock后 请点击

请参考如何关闭Adblock/Adblock plus

安装Adblock plus用户请点击浏览器图标
选择“Disable on www.wenxuecity.com”

安装Adblock用户请点击图标
选择“don't run on pages on this domain”