计算机猜数算法
来源:互联网 发布:出货单模板软件 编辑:程序博客网 时间:2024/05/22 14:37
算法基本分2部分
先筛选出前2个数字,判断他们的位置,后不参加后面的判断,直到四个数字位置全对
在筛选出后2个数字,判断他们的位置
最终结果存放在一个数组中S[]中
首先从0000,1111,2222….开始for循环到9999
依次判断人输入的猜对的个数M,知道有数字猜对会有5种情况,依次为
M=0:进行下次循环
M=1:得知此时四个数中的一位,设为N1,N1位置设为LN1=1;开始判断这个数的位置,同时判断其他未知数,电脑开始改变输出数字规则,按照此时知道的数字和猜它相应的位置,同时输入此数字+1的值判断猜对个数M和位置L来输出数字让人猜,M=1则排出N1+1不在四个数中,M=2则说明N1+1为四个数中之一,开始判断这两个数的位置,确定位置后这两个数将不参加后面数字判断,后面两个数字判断和位置确定跟前两个位置判断过程一样
M=2:说明这两个数相同存在,但位置不确定,调用上面的函数利用不存在四个树种的数根据提示位置的多少骗出两个相同数的位置,确定位置后这两个数将不参加后面数字判断,后面两个数字判断和位置确定跟前两个位置判断过程一样
M=3:说明三个数相同存在,利用一个不存在四个数中的数确定出三个数的位置,然后最后确定最后一个数
M=4:直接猜出来了。
欺骗的情况为for循环结束
不会超过18步
例子:人猜数字为5326
0000
0 0
1111
0 0
2222
1 1
2333
2 1(n1=2,n2=3,位置不确定,开始分两个方向正常判断位置和mapping2的位置,此情况为开始mapping2的位置)
3200(借助2个不存在四个树中数字来判断出n1,n2位置)
2 0
0320
2 2(mapping结束标示,得出n1,n2的位置,开始判断下面的数字,判断出位置的不参加下面的判断,下面的判断过程和上面一样确定2个数字相应的位置)
4444
0 0
5555
1 1
5666
2 2
5326
3 4
成功
- 计算机猜数算法
- 计算机猜数解答
- 计算机算法
- 计算机算法
- 计算机算法
- 计算机浮点数标准
- 计算机中的浮点数
- 计算机数的表示
- 计算机表示正负数
- 查询计算机内核数
- 计算机中英文数
- 算法:计算机几何算法
- 【算法】计算机算法-排序算法
- 计算机中的定点数和浮点数
- 计算机浮点数 float 表示
- 计算机中的数的表示
- 计算机浮点数 float 表示
- 计算机浮点数 float 表示
- 求一天是一年中的第几天
- C++部分编程经验(转)
- 也来感慨一下
- Redhat9下LXR 0.3的安装
- Linux下源代码阅读工具lxr安装使用说明
- 计算机猜数算法
- Fedora 8 下测试php,mysql,apache
- XHTML基础教程1
- 配置Android开发环境(fedora)
- flash不显示的问题
- 树行
- 服务器应用程序不可用(转载)
- 在Window系统中得到局域网中没有用的ip地址
- 数据库笔试题