游戏里的算法问题... ( 积分: 100 )

  • 主题发起人 主题发起人 jhddx
  • 开始时间 开始时间
J

jhddx

Unregistered / Unconfirmed
GUEST, unregistred user!
在游戏里有这样一个题目:
有a b c 3个数 为一组。
比如:
a b c

0 0 5
1 0 4
2 3 0
1 1 3

这样的 ,每一组的和都为5,系统随即给出一个组合,你一 个个填入组合猜,系统即给出两个判断,对一个 或者 全错 (必须对应位置数字正确才算正确),然后根据系统的判断再重新尝试..直到完全正确

请问如何用程序来用最少的猜测次数找到正确结果组合。
 
晕..没人来拿分..
 
既然系统已经给出组合(例如 1 1 3),那么操作者还能猜什么?猜0么?——请给出一
两个系统与用户交互过程的例子。


ps: 这个问题与是算法问题,建议转到“基础篇-数据结构”分类中去。
 
回答楼上的,系统给出一个组合,指的是系统随机内值一个组合。是操作者不知道的! 操作者必须一个个组合猜测着去匹配,系统自动做出比较,提示 对一个 或者 全错。

比如系统内置一个 (1 0 4),当你猜测 (0 0 5)的时候就提示对一个,猜测(2 1 2)的时候提示全错 , 然后继续猜,直到完全正确。

要猜测哪一个去匹配最可能正确,需要人脑判断 ,我的意思就是,用程序根据系统的提示,自动给出最可能正确的组合去匹配,达到最少的次数猜测对!



PS:谢谢提醒,我已经转过来了!
 
呵呵,不难啊——首先穷举出所有可能的组合,然后,根据游戏的输出将肯定不对的组合
去掉,在正确的组合中随机的选一个做为回答,根据回答再进行筛选,如此循环往复,直到
全对为止。 :)
——由于每次筛选留下来的都是符合条件的,所以并不存在什么“最正确”的组合,做为
程序,随机选择就够了。
 
分二步
1、先取得数字的个数(10次)
猜测(0 0 0)
猜测(1 1 1)
...
猜测(9 9 9)
2、根据第一步可以得到的数字进行排序(最多6次)
 
TO power255:
不好意思..我没写清楚题目还是你只是做个示例,怎么出了(9 9 9)了?呵呵...

TO creation-zy:
你说的方法是可行的,但是不是我需要的,你的方法是没有任何优化的一个个去匹配。
我的意思是希望程序能够聪明点..呵呵..可能要求有点高了..
比如 (5 0 0)提示对一个的时候..就应该判断哪个O是对的..该用(0 5 0)或者(0 0 5)去判断.. 呵呵..可能有点难了,是不是得和做棋类游戏一样的..容入任何可能的走法呢...
 
我觉得没必要,对于这个简单的问题,用简单的方法比对是效率最高的,而考虑策略反而
要涉及到复杂的分支情况,无论是编写代码还是基于这些情况进行运算,综合起来的时空复
杂度都比不上用简单的办法。棋类游戏之所以要进行试探搜索,而不是事先把整个解空间展
开,是因为哪怕是看起来很简单的棋类游戏,解空间都远远超过了现代计算机的存储能力以
及运算能力,所以只能进行基于现有局面的有限推理。考虑到楼主的问题与这类问题相差太
大,试图采用相似的策略可能并不明智。

如果一定要减少比对次数,可以这样:预先将不分内部次序的组合全都穷举好(数量会比
有顺序的少很多倍),然后,对每一种组合的所有几种可能回答情况进行预演,推算出在该
情况下的可能组合——这样,在第一次回答后,就能在一个非常小的范围内进行搜索,从而
达到了楼主关于程序要“聪明点”的要求。但是,很明显——代价是需要一个繁复的预演过
程。
 
谢谢creation-zy的耐心讲解,你说地有道理!看来是我的思路有问题。
 
呵呵...不好意思没有看清楚题目...昨天是不是我头晕了~~~
 
后退
顶部