井字棋是怎样玩的拜托各位了 3Q

井字棋是怎样玩的拜托各位了 3Q,第1张

井字棋可能是最简单的棋类游戏了,它简单到了成年人之间玩几乎总是平局的地步。因此,这个游戏貌似最多只能哄哄小孩子。不过,对井字棋游戏中所有可能的情况进行一番细致的分析,你会发现一个你或许不会料到的惊人结论——先手的最优策略不是稳坐正中央,而是先占一个角! 几年前,曾经自己动手写过一个和人下井字棋的电脑程序,运行之后却发现电脑先走时总爱把第一步棋下在角上;检查程序代码许久后才意识到,电脑程序可能并没有问题。人们往往有一个定势思维,认为由于从正中央出发能够得到的连线最多,因此最优策略必然是先占住正中央这块宝地。然而,经验是一回事,实际上就是另一回事了——这个电脑程序看似很没头脑地往角里下棋,但几乎总是在赢。 无独有偶,国外著名的 Geek 漫画 xkcd 最近画了一幅井字棋最优策略完全图,同样给出了这个违反直觉的结论:第一步走在角上才是最佳的策略。 这究竟是为什么呢?不妨让我们看一看,如果第一步真的走角,会发生哪些情况。 先手先占角! 游戏开始后,二话不说先哗枣迅占上一个角(比如左下角吧),那么对方总共有五种本质不同的应对策略:占据靠近你的那条边,占据靠近你的那个角,占据远离你的那条边,占据远离你的那个角(即对角),以及占据正中央的位置。不可思议的是,在这五种策略中,前面四种都是陷阱——如果对方不慎选择了前面四种策略中的任意一种,他就必然输掉。 上图显示了在这四种情况下你可以如何把对方一步步逼上绝路。假设对方走正下方,占据了一个靠近你的边(最左边的那个图),你就可以占据正中央来应对,逼迫对方不得不走右上角。这时,只需要在左上角放下一子,你就赢定了——岩罩图中出现了两条只差一子的连线,对方不可能兼顾得了。 右边几个图显示了对方第一步棋的其它几种走法。选乱此择合适的位置应对他,都可以在下一步迫使对方只剩一种走法,接下来你便可以下出“一箭双雕”的棋,让对方无法彻底封杀你。 也就是说,当你占据棋盘一角后,在对方下一步棋的八个可选位置中,其中七个位置都是必输的,陷阱摆满了几乎整个棋盘。在面对“先走一角”的诡异开局时,你的朋友说不准就会慌了手脚,没能冷静地占住中间,决定了必败的命运。 对方要是真的走了正中间,你仍然有赢的机会。你可以占住右上角的位置(如上图)。如果对方不幸走了剩下的两个角中的一个(上图左),你便能故技重施,再次取得胜利。只有对方选择了边上的位置(上图右),才能躲过这一系列的陷阱,最终变成平局。 难怪计算机会把角上的位置当作宝地呢。 后手还是先占角! 作为后行者,你遇到的往往是“先走中间”的经典开局。此时,千万别忘了,先占角仍然是一条金科玉律。如果你不慎走了某条边的位置,对方可就赢定了!对方可以向上面的第一幅图那样,在正右方下子应对,逼迫你把下一步棋落在正左方。此时,对方便可占据右上方的位置,同时产生出两条仅差一子的连线。右边三幅图则显示,如果你在角上应对,最终总会是一盘和棋。

一)前端基本功

前端相关的基础知识

《HTTP/3 来了 !未来可期》

《你可能已经忽略的 git commit 规范》

《手写一个 WebSocket 协议》

《5000字解析:前端五种跨平台技术》

《一篇搞定移动端适配》

《Chrome DevTools中的这些骚 *** 作,你都知道吗?》

《Chrome 运行时性能瓶颈分析》

《当浏览器全面禁用三方 Cookie》

《无形中提高工作效率的 Chrome 插件》

《还分不清 Cookie、Session、Token、JWT?》

《你连 HTTPS 原理都不懂,还讲“中间人攻击”?》

《npm install 原理分析》

《不容错过的 Babel 7 知识汇总》

《一文搞懂 Web 中暗藏的纤链密码学》

《解读HTTP/2与HTTP/3 的新特性》

CSS

《那些不常见,但却非常实用的 CSS 属性》

《面试官:你毁拿孙可以用纯 CSS 判断鼠标进入的方向吗?》

《二营长,快掏个CSS出来给我画个井字棋游戏》

《CSS 故障艺术》

《我写CSS的常用套路(附demo的效果实现与源码)》

《来自新时代的 CSS》

《你还不会 CSS 动画?》

JavaScript

《谁说前端不需要懂二进制》

《你不知道的 Blob》

《Javascript常用的 60 余种工具方法》

《你可以这样优化 if-else 代码结构》

《JS 图片压缩的实现思路》

《一个简洁、有趣的无限下拉方案》

《请你实现一个大文件上传和断点续传》

《从 ES6 到 ES10 的新特性万字大总结》

《JavaScript 手写代码无敌秘籍》

TypeScript

《通俗易懂的 TypeScript 入门教程》

《用 TypeScript 编写 React 的最佳实践》

《一文读懂 JS 装饰器》

《你真的懂 Promise 吗?》

《Typescript 那些好用的技巧》

《Typescript 严格模式有多严格?》

二)前端框架、工具、库

React

《用 TypeScript 编写 React 的最佳实践》

《2020 年你应该知道的 React 库》

《5 个技巧助你编写更好的 React 代码》

《10个案例让你彻底理解React hooks的渲染逻辑》

《组件演进史:从Mixin到HOC,再到Hook》

Vue

《1.1万字从零解读Vue3.0源码响应式系统》

《重头来过的 Vue 3 带来了什么?》

Nodejs

《一杯茶的时间,上手 Node.js》

《深入理解 Node.js 进程与线程》

Deno

《Deno 会取代 Node.js 吗?》

《了不起的 Deno 入门教程》

《推倒 Node 重做,Deno 1.0 来了》

Webpack

《一文搞懂 Webpack 多入口配置》

GraphQL

《GraphQL-前端开发的利剑与桥梁》

《GraphQL 入门看这篇就够了》

《前端工程师应该了解的 GraphQL》

VS Code

《动图演示11个必备 VS Code 插件》

三)面试题精选

《高频前端面试题》

《吐血整理!再来一打 Webpack 面试题》

《前端同学经常忽视的一个 JavaScript 面试题》

《如何轻松拿到淘宝前端 offer》

《三年大厂面试官:二面题》

《十几道含答案的大厂面试题总结》

《如何答一道惊艳面试官的数组去重问题?》

《10 个 CSS 高频面试题,你都会吗?》

《经常被面试官考的 JS 数据类型知识你真的懂吗?》

《面试须知:浏览器相关原理详细总结》

《2019 大龄前端如何准备面试?》

《2018 大厂高级前端敏喊面试题汇总》

四)前端开发的职业修炼

《前端如何在项目中做出亮点》

《Facebook 前端技术栈重构分享》

《当前端基建任务落到你身上,该如何推动协作?》

《使用 docker 高效部署你的前端应用》

《关于前端学习路线的一些建议》

《各种场景唤起 App 的骚 *** 作》

《Web 视频播放前前后后那些事》

《你必须要注意的依赖安全漏洞》

《从 12.67s 到 1.06s 的网站性能优化实战》

《网易云音乐前端性能监控实践》

《一个阿里前端工程师的成长之路》

《非常全面的前端协作规范》

《一名合格前端工程师的自检清单》

《从 0 到 1 再到 100:搭建、编写、构建一个前端项目》

希望对你有用,望采纳~

int a[][]=new int[3][3]

for (int i = 0 i < a.length i++) 配早{

for (int j = 0 j < a.length j++) {

a[i][j]=(int)(Math.random()*2)

}

}

int x=0

for (int i 歼悄= 0 i < a.length i++) {

for (int j = 0 j < a.length j++) {

x++

System.out.print(a[i][j]+" ")

if(x%3==0)

System.out.println()

}

}

判断的话if(a[0][0]==a[0][2]==a[0][1])等等都写上培改雀就行了


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12533302.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存