求猜不重复四位数的算法

给你0到9个数字,每次猜不重复的四个数字(首位不为0),我会告诉你你猜的数字和答案的关系。例如猜1234,答案是3564。我会告诉你1A1B,1A代表有一个数字位置数字都猜对,1B代表有一个数字猜对但位置不对。给你七次机会,谁有相关的算法或推理步骤,谢谢!

第1个回答  2008-03-10
这是一个游戏,我做过,可以猜出来的
但是每一题有每一题的特点,不容易说清楚
我只能说大体的思路
第一次只能任意说出四个数,得到提示后,按提示进行
去掉几个数,再填上几个数,把第一次余下的数的位置也进行调整,
第二次得到到提示后,也再重复以上的方法,一般七次以内可以猜出,也有可能你在选取过程中方法有问题,那么就猜不出来了.
只能说这些,你做几次这个游戏就可以体会了.
第2个回答  2008-03-10
(1)先确定数字:以你给出的数字为例,报1234,提示1A1B,再报5678,提示0A2B(第二次报数,切记不要重复第一次报过的数字)一般情况下2次就可以确定是哪四个数字,排除剩下的2个数字,万一你报的数字是0A1B类型的,例如5780,也不要紧,这样说明69里面必有一个。
(2)假设试探:假设第一次报对了1的位置和3这个数字,第2次报对的数字是76,这四个数字可能是1376、1763、1673等,从这些数字里随便报一个(注意不要报XX3X这样的数字),例如1376,提示0A2B,说明1的位置不对。再用13和58来配一次,报数5831(有几个选择的数字,可以从上面排除的条件外随便报)提示0A2B,说明1和3,7和6,5和8,不同时存在,5和7,5和6,6和8,7和8 里面有一组数字是同时存在的。
(3)假设配对数字:有1没3,配5和7,随便报一组5217提示0A1B,说明12不存在,34有,并且4 的位置是对的,3在第一位,5和7 有一个,可以报3564或3654,很快就知道答案了。
这类游戏切记报数不要重复,利用位置关系,牢记排除的条件。在几次报数的过程中会有多种不同的数字可以报,运气好不用7次也可以知道答案。本回答被提问者采纳