From 5ec5eb224ee0b5a7f0e3249c1ca7fed17ea2fa48 Mon Sep 17 00:00:00 2001 From: ZhuangYumin Date: Sat, 7 Oct 2023 11:51:45 +0800 Subject: [PATCH] update README --- README.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/README.md b/README.md index 3a9aa0a..0ac6ea8 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,27 @@ +# 思路简介 +## Server +相当于一道模拟题,注意时间效率不要太差以及细节问题 +## Client +扫雷一般是采用如下思路: +1. 根据已翻开的数字推测周围的哪些格子里有多少雷,在此基础上进行逻辑推理,当推断出n个格子里有0个或n个雷时,我们就可以确定了。优先点开确定的雷。 +2. 当没有确定的雷点击时,进行一些猜测。 + +### 确定解 +在尝试寻找确定解时,我采用的方式是在每个待求解格子上设一个未知数,解一个方程组,在高斯——约旦消元的基础上特判一下n个格子里有0个或n个雷,由于这个特判过程不是基本行变换,对线性方程的影响可能不太可靠,多求解几次。 + +### 猜解 +1. 在猜测时,对于一个已翻开的格子,如果它周围的n个未知格子里应当有m个雷,那么把$\frac{m}{n}$用幂函数$f(x)=x^k ([0,1]\to [0,1])$处理一下,并把处理结果塞进那些未知格。对于已知格和未知格为边相邻和角相邻,$f(x)$分两种,它们的幂次不同。这个步骤的目的是赋予边相邻和角相邻的情况不同的权重。 +2. 当一个格没有收集到任何数时,采用一个全局默认估计有雷频率(初始为0.06,当已翻开格子足够多后用已知区实际计算比例)替代$\frac{m}{n}$,幂函数的幂次为两种幂次的算术平均数,把全局默认估计有雷频率用幂函数处理一下视作这个格子收到的数。 +3. 随后,对于每个未知格,把它收集到的数取一个t次方平均数,由此得到最终估计有雷概率。这个步骤的目的是赋予较大的值更大的权重,这样更加慎重一点。 +4. 在得到最终估计有雷概率后,扫描整个地图,找严格概率最小的那个格子。但是在还剩最后5%的格子没有被点开时,仿照模拟退火以一定可能性允许概率更大的格子替换当前解 + +___ # references目录下的参考信息来源 +~~虽然好像根本没看~~ - - - + ___ # Minesweeper-2023 > ACM 班 2023 级程序设计第一次大作业