发散性思维(一)——通过变通和联想来解决问题

简介: 发散性思维(一)——通过变通和联想来解决问题

没错,我又要开一个新的系列文章了。

第一篇文章我们来玩一个游戏:

两个人从1,2,3,4,5,6,7,8,9里面轮流取数,每次取一个数,一个人取了某个数,另一个人就不能再取它了。

取胜条件: 1.先取数的人,从自己拥有的数字里面任取三个数,这三个数相加之和为15。 2.后取数的人:三个数之和为15。

例如:A取6,B取7,A取4,B取3,A取5,此时A的三个数之和为15,A获胜。

这个游戏初看起来很简单,但是策略性却不低。

  1. 假设A取了一个数字4,为了获胜,他接下来需要取两个数,这两个数之和是11,那么组合有(2, 9)、(3, 8), (5, 6)。
  2. 此时B为了防止A胜利,那么他可以设法破坏一个组合,比如他取走了3。
  3. A只能从(2, 9),(5, 6)里面取一个数。如果A取了2,B就取9;
  4. A取6,B取5
  5. 现在局势倒转了,B拥有5和9、3和5,如果A取1,那么B取7胜利;如果A取7,那么B取1胜利。

A虽然有先手优势,但是他一味贪胜,没有注意到B在堵他的时候,依然悄悄凑够了一个胜利的局势。

B虽然是后手,但是他在A第一次取了数以后,并不是随便乱选一个数来破坏A剩余的11,而是有策略的深入考虑了后面的可能性。如果B一开始没有选3,而是选的8,或者A选了5,那么B就只能被牵着鼻子走,不停去防守,失去进攻的机会了。

你可能会觉得这个题目还挺烧脑子。不容易想到两步之后。那么我给你念一句你小学时候在奥数里面听过的顺口溜:

戴九履一,左三右七,二四为肩,六八为足,五在当中。

这就是洛书乌龟背上面的三阶幻方,如下图所示:

在这个九宫格里面,横向、纵向、对角线上面的三个数字之和均为15。那么上面的选15的游戏,实际上就转换成了在幻方里面选数字。

再进一步,由于是轮流取数字,那么这实际上和下面这个游戏没什么区别:

上面的取数游戏,本质上就是井字棋,而且是最简单的三阶井字棋。

三阶井字棋,要输掉是极其困难的,绝大多数情况下都是以平局结束。

如果以三阶井字棋来复盘上面的取数游戏,首先A取了4,B取了3,局势如下图所示:

显然,B最优的策略是取中间,但是他取了中间左边。A此时如果选中心还有胜利的希望,即时不选中心,选上层的中间也可以。但是他取选了上层右边,白白送掉了自己的性命。

大家可以在井字棋上画一下,A有很多赢的机会,但是由于看不到局势而全都错过了。

这个小游戏作为这个系列的第一篇,更多的精彩,还请大家继续关注。

目录
相关文章
|
小程序 数据安全/隐私保护 开发者
【已解决】开发者扫码登录提示“需要验证小程序密码”
开发者扫码登录提示“需要验证小程序密码”
1017 0
【已解决】开发者扫码登录提示“需要验证小程序密码”
|
数据处理
数据处理 过采样与欠采样 SMOTE与随机采样 达到样本均衡化
数据处理 过采样与欠采样 SMOTE与随机采样 达到样本均衡化
501 0
数据处理 过采样与欠采样 SMOTE与随机采样 达到样本均衡化
|
10月前
|
存储 分布式计算 数据挖掘
数据架构 ODPS 是什么?
数据架构 ODPS 是什么?
2750 7
|
5月前
|
人工智能 JSON 小程序
【一步步开发AI运动APP】七、自定义姿态动作识别检测——之规则配置检测
本文介绍了如何通过【一步步开发AI运动APP】系列博文,利用自定义姿态识别检测技术开发高性能的AI运动应用。核心内容包括:1) 自定义姿态识别检测,满足人像入镜、动作开始/停止等需求;2) Pose-Calc引擎详解,支持角度匹配、逻辑运算等多种人体分析规则;3) 姿态检测规则编写与执行方法;4) 完整示例展示左右手平举姿态检测。通过这些技术,开发者可轻松实现定制化运动分析功能。
|
消息中间件 监控 大数据
Kafka消息队列架构与应用场景探讨:面试经验与必备知识点解析
【4月更文挑战第9天】本文详尽探讨了Kafka的消息队列架构,包括Broker、Producer、Consumer、Topic和Partition等核心概念,以及消息生产和消费流程。此外,还介绍了Kafka在微服务、实时数据处理、数据管道和数据仓库等场景的应用。针对面试,文章解析了Kafka与传统消息队列的区别、实际项目挑战及解决方案,并展望了Kafka的未来发展趋势。附带Java Producer和Consumer的代码示例,帮助读者巩固技术理解,为面试做好准备。
1191 0
|
5月前
|
开发工具 Android开发 开发者
在Android设备上运行Flutter应用程序时,如果遇到设备未授权的问题该如何解决?
在Android设备上运行Flutter应用程序时,如果遇到设备未授权的问题该如何解决?
316 61
|
7月前
|
人工智能 Linux iOS开发
Burp Suite Professional 2025.2 (macOS, Linux, Windows) - Web 应用安全、测试和扫描
Burp Suite Professional 2025.2 (macOS, Linux, Windows) - Web 应用安全、测试和扫描
354 12
Burp Suite Professional 2025.2 (macOS, Linux, Windows) - Web 应用安全、测试和扫描
|
11月前
|
编译器 C语言
变量的声明与定义区别
变量的声明是指预先告知编译器变量的名称和类型,但不分配内存;而定义则是声明的同时在内存中分配空间,可以初始化。简单来说,声明是告诉编译器“有这么一个东西”,定义是“创建并使用这个东西”。
321 11
|
11月前
|
Java API Spring
springboot学习七:Spring Boot2.x 拦截器基础入门&实战项目场景实现
这篇文章是关于Spring Boot 2.x中拦截器的入门教程和实战项目场景实现的详细指南。
213 0
springboot学习七:Spring Boot2.x 拦截器基础入门&实战项目场景实现
|
JSON 测试技术 API
连测试大拿都不敢说熟练掌握的HTTPRUNNER2.x使用技巧
这篇文章详细介绍了HTTPRunner 2.x的高级使用技巧,包括工具的设计思想、核心功能、分层测试思想,以及如何搭建开发环境、理解基础概念、掌握关键知识点和进行框架扩展使用。
173 2
连测试大拿都不敢说熟练掌握的HTTPRUNNER2.x使用技巧