{
                settextcolor(RED);
                outtextxy(200, 400, s1);
                break; 
            }
            n=(rand()%(b-1)+1);
            showConputerTake(n);
            a=a-n;
            showTotal(a);
            Sleep(2000);
            InputBox(person, 10, "你要取走几根?",NULL,NULL,0,0,false);
            sscanf(person, "%03d", &z);
            while(z>=b || z<1 || z>a)
            {
                InputBox(person, 10, "数字不符,请重新输入",NULL,NULL,0,0,false);
                sscanf(person, "%03d", &z);
            }
            showPersonTake(z);
            a=a-z;
            showTotal(a);
            if(a==0)
            {
                settextcolor(RED);
                outtextxy(200, 400, s);
            }
        }
    }
}


2    分析
接下来对火柴游戏的问题进行具体的分析,从火柴总数目为25,每次最多可取得数目为5开始,到火柴总数目为m,每次最多可取得数目为n。只要解决了当火柴总数目为m,每次最多可取得数目为n的情况,那么一切问题都会迎刃而解。
2.1    基于火柴总数目为25,每次最多取得数目为5的假设分析
    火柴总数目为25,每次最多可取得数目为5。每轮人机各取一次。
    若双方每次都取最小数目,则一次循环取走的火柴数目为2。25除以2所得结果为12余数1,先手者拿最后一根败,当然,正常的结果肯定不是这样的,因为当火柴总数目逐步减少到6的时候,下一轮的选手便可以直接拿走5根火柴,只留下一根,让对方无可奈何的输掉比赛。
若双方每次都取最大数目,则火柴总数目25除以每次最多可取得数目5,所得结果为5,即当游戏结束2轮后,第三轮剩下5根火柴被先手的选手取走,游戏结束。当然,这种情况也是不可能发生的,因为剩下5根火柴的时候,先手的选手只要取走4跟,留下最后一根给后手的选手,便可以赢得比赛。
通过以上两次的分析我们可以发现,单单依靠这种猜测的方法是没办法解决这个火柴游戏的。因为比赛过程中火柴的总数目会发生改变,一旦火柴的总数目发生了改变,那么游戏者的对策也可能会发生改变,而这些改变是我们无法预测的。但是有一点我们可以确定,从上面的例子中可以看出,当每次最多可取得的火柴数目为5时,倘若最后剩下的火柴数目小于等于6且大于等于2的时候,这时候,这次轮到取火柴的游戏者其实就已经取得了胜利。
上一篇:ASP.net人才招聘网络化管理系统设计+ER图
下一篇:3dsMax和Unity3d小户型室内场景虚拟展示与交互漫游系统设计

浅议网络游戏安全问题及防范措施【3230字】

索尼游戏营销策略研究+SWOT分析

Objective-C语言IOS智联学校系统的设计

Go语言云平台的移动学习系统云端处理

Android+Unity3D旅游景区自助服务系统的设计

java+Bootstrap旅游咨讯网的设计

java+oracle旅游管理系统的设计+ER图

神经外科重症监护病房患...

公寓空调设计任务书

医院财务风险因素分析及管理措施【2367字】

中国学术生态细节考察《...

10万元能开儿童乐园吗,我...

C#学校科研管理系统的设计

国内外图像分割技术研究现状

志愿者活动的调查问卷表

AT89C52单片机的超声波测距...

承德市事业单位档案管理...