update README
This commit is contained in:
20
README.md
20
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目录下的参考信息来源
|
# references目录下的参考信息来源
|
||||||
|
~~虽然好像根本没看~~
|
||||||
- <https://github.com/DavidNHill/Minesweeper>
|
- <https://github.com/DavidNHill/Minesweeper>
|
||||||
- <https://github.com/DavidNHill/Minesweeper2>
|
- <https://github.com/DavidNHill/Minesweeper2>
|
||||||
- <https://dash.harvard.edu/bitstream/handle/1/14398552/BECERRA-SENIORTHESIS-2015.pdf>
|
- <https://dash.harvard.edu/bitstream/handle/1/14398552/BECERRA-SENIORTHESIS-2015.pdf>
|
||||||
|
|
||||||
___
|
___
|
||||||
# Minesweeper-2023
|
# Minesweeper-2023
|
||||||
> ACM 班 2023 级程序设计第一次大作业
|
> ACM 班 2023 级程序设计第一次大作业
|
||||||
|
Reference in New Issue
Block a user