首页 > 其他分享 >对策问题

对策问题

时间:2024-10-26 23:32:56浏览次数:3  
标签:10 例题 999 问题 棋子 火柴 获胜 对策

同学们都熟悉“田忌与齐王赛马”的故事,这个故事给我们的启示是:田忌采用了“扬长避短”的策略,取得了胜利。
生活中的许多事物都蕴含着数学道理,人们在竞赛和争斗中总是玩游戏,大至体育比赛、军事较量等,人们在竞赛和争斗中总是希望自己或自己的一方获取胜利,这就要求参与竞争的双方都要制定出自己的策略,这就是所谓“知己知彼,百战不殆”。哪一方的策略更胜一筹,哪一方就会取得最终的胜利。
解决这类问题一般采用逆推法和归纳法。

【例题1】

两个人做一个移火柴的游戏,比赛的规则是:两人从一堆火柴中可轮流移走1至7根火柴,直到移尽为止。挨到谁移走最后一根火柴就算谁输。如果开始时有1000根火柴,首先移火柴的人在第一次移走多少根时才能在游戏中保证获胜。
先移火柴的人要取胜,只要取走第999根火柴,即利用逆推法就可得到答案。
设先移的人为甲,后移的人为乙。甲要取胜只要取走第999根火柴。因此,只要取到第991根就可以了(如乙取1根甲就取7根;如乙取2根甲就取6根。依次类推,甲取的与乙取的之和为8根火柴)。由此继续推下去,甲只要取第983根,第975根,……第7根就能保证获胜。
所以,先移火柴的人要保证获胜,第一次应移走7根火柴。

【例题2】

有1987粒棋子。甲、乙两人分别轮流取棋子,每次最少取1粒,最多取4粒,不能不取,取到最后一粒的为胜者。现在两人通过抽签决定谁先取。你认为先取的能胜,还是后取的能胜?怎样取法才能取胜?
从结局开始,倒推上去。不妨设甲先取,乙后取,剩下1至4粒,甲可以一次拿完。如果剩下5粒棋子,则甲不能一次拿完,乙胜。因此甲想取胜,只要在某一时刻留下5粒棋子就行了。不妨设甲先取,则甲能取胜。甲第一次取2粒,以后无论乙拿几粒,甲只要使自己的粒数与乙拿的粒数之和正好等于5,这样,每一轮后,剩下的棋子粒数总是5的倍数,最后总能留下5粒棋子,因此,甲先取必胜。

【例题3】

在黑板上写有999个数:2,3,4,……,1000。甲、乙两人轮流擦去黑板上的一个数(甲先擦,乙后擦),如果最后剩下的两个数互质,则甲胜,否则乙胜。谁必胜?必胜的策略是什么?
甲先擦去1000,剩下的998个数,分为499个数对:(2,3),(4,5),(6,7),……(998,999)。可见每一对数中的两个数互质。如果乙擦去某一对中的一个,甲则接着擦去这对中的另一个,这样乙、甲轮流去擦,总是一对数、一对数地擦,最后剩下的一对数必互质。所以,甲必胜。

【例题4】

甲、乙两人轮流在黑板上写下不超过10的自然数,规定禁止在黑板上写已写过的数的约数,最后不能写的人为失败者。如果甲第一个写,谁一定获胜?写出一种获胜的方法。
这里关键是第一次写什么数,总共只有10个数,可通过归纳试验。
甲不能写1,否则乙写6,乙可获胜;甲不能写3,5,7,否则乙写8,乙可获胜;甲不能写4,9,10,否则乙写6,乙可获胜。因此,甲先写6或8,才有可能获胜。
甲可以获胜。如甲写6,去掉6的约数1,2,3,6,乙只能写4,5,7,8,9,10这六个数中的一个,将这六个数分成(4,5),(7,9),(8,10)三组,当乙写某组中的一个数,甲就写另一个数,甲就能获胜。

标签:10,例题,999,问题,棋子,火柴,获胜,对策
From: https://www.cnblogs.com/xiins/p/18505341

相关文章

  • 关于git中出现的无法连接的问题
    问题有时候使用gitclone或者pipinstall会出现无法访问的情况如OpenSSLSSL_read:SSL_ERROR_SYSCALL,errno0以及Failedtoconnecttogithub.comport443after21113ms:Couldnotconnecttoserver,这些可能是由于代理的配置造成的取消全局代理gitconfig--g......
  • 解决kafka3.0.0在windows下不能启动的问题
    看到一个问题,说在用java代码发送kafka消息的时候能指定一个partition参数:importorg.apache.kafka.clients.producer.ProducerRecord;publicclassKafkaProducerExample{publicstaticvoidmain(String[]args){Stringtopic="test";intparti......
  • C++/CLI使用Office.Interop库创建excel,同时解决写入速度慢的问题
    boolWriteExcelFile_OfficeInterop(String^path,DataSet^dt, conststd::vector<std::string>&sheetName,boolhideColumnName) { //Ifthefilealreadyexists,deleteitandthengeneratefile if(System::IO::File::Exists(path)) { try......
  • vue3监听和不能使用this问题,uniapp封装请求
    http.js//格式化日期函数exportfunctionrequest(method,url,data){consturls="http://183.6.96.231:29101"; constusername=uni.getStorageSync('username'); consttoken=uni.getStorageSync('token'); uni.showLoading({......
  • 搜索,问题 S: 胜利大逃亡
    题目描述Ignatius被魔王抓走了,有一天魔王出差去了,这可是Ignatius逃亡的好机会.魔王住在一个城堡里,城堡是一个A*B*C的立方体,可以被表示成A个B*C的矩阵,刚开始Ignatius被关在(0,0,0)的位置,离开城堡的门在(A-1,B-1,C-1)的位置,现在知道魔王将在T分钟后回到城堡,Ignatius每分......
  • 搜索,问题 O: 马的移动
    题目描述小明很喜欢下国际象棋,一天,他拿着国际象棋中的“马”时突然想到一个问题:给定两个棋盘上的方格a和b,马从a跳到b最少需要多少步?现请你编程解决这个问题。提示:国际象棋棋盘为8格*8格,马的走子规则为,每步棋先横走或直走一格,然后再往外斜走一格。输入输入包含多组测试数......
  • 双色球问题
    题目描述:某双色球系统,红球是1-35之间的数据,篮球是1-15之间的数据,一注双色球号码是由6个不重复的号码和1个篮球号码组成的。中奖号码:101230167112具体功能点的要求如下:请随机一组双色球号码,6个红球号码要求不重复,且升序排序输出,篮球号码放在最后面输出。假设上图展......
  • Windows 记录一次磁盘相关的PC卡顿问题
    我的电脑最近经常抽疯,时不时卡顿一次检查系统事件日志,会有这俩个:发出了对设备\Device\RaidPort0的重置。已在磁盘0(PDO名称:\Device\0000003a)的逻辑块地址0x7206a8处重试IO操作。DiskGenis检查磁盘0,是正常的:这个FASPEED硬盘是国产士必得牌子的。京东商城找到F......
  • XLSX.js解析Excel中的日期格式数据遇到的问题
    使用xlsx.js读取Excel中的日期有两种方式:XLSX.read(file,{type:'binary'})XLSX.read(file,{type:'binary',cellDates:true})通过第一种方式读取日期,解析结果是Excel中保存的数字(Excel会将日期保存为数字。例如,将2020/09/30由日期格式改成文本格式时,会得到一个44104......
  • Qt开发技巧(十九):定时器的调用问题,控件的透明问题,慎用事件过滤器,依赖库的路径链接,对话框
    继续讲一些Qt开发中的技巧操作:1.定时器的调用问题有一个场景经常遇到,那就是在符合某个条件下,延时一段时间去执行一段代码,如果短时间内触发多次又不需要频繁执行,只需要执行一次就行。如果选择用QTimer::singleShot无法终止已经触发的,这个时候就要主动实例化一个单次定时器,......