求教一个算法
vb吧
全部回复
仅看楼主
level 2
youzhisen 楼主
大家都知道猜数字这种游戏吧 猜一个4个数字(0~9)的有序数组,位置正确返回a 位置不正确但是出现返回b(还有个数的 比如2a 1b) 这个游戏要做就太简单了但是 我想要的是 用程序~人工智能 来模拟人的操作 从而完成这个游戏如果单单排列组合 就没什么意思了希望能有个比较简单的比较逻辑的算法 请各位留留自己的想法 呵呵谢谢了 我这纯属好奇 自己想了个 看看大家的想法
2007年12月27日 16点12分 1
level 2
youzhisen 楼主
我自己想的算法 可能很幼稚 现在只想了 前一部分 就是无序数组 再确定顺序大概不难 由于是有序4位数组 所以建立一个a(n)=n n=0~9的数组(纯属个人习惯 大概也可以不用) 从0开始 每隔2个数字取连续4个数字 填入 空格中(发送4个数字到猜数字那个游戏(子程序)中)会产生一组返回值(共5次) 现在只看是否出现 不讨论确定位置的情况 就返回值进行分析(这个模块很复杂 额~~比如 如果连续出现2个返回值位1的话 中间的两个数字必定不是所求数字) 这里分析数字回出现几种 所求数/非求数 两种共同构成已知数 已知数都是通过排除得到的 排除的方法 除了刚才所说的2个连续返回值是1 以外 还可以通过 返回值为3 4 0等等得到 如果返回值为2 则需要进一步分析 这里就需要吧已知值更换位置 返回到上面的 发送数字组 这样 通过返回值不为2的情况 逐渐排除 其他数字 最终使得数字都为已知 至于顺序 最简单(对编程来讲)的方法就是吧一个所求数搭配 3个非求数 发送 这样很容易吧4个所求数的位置确定 当然 这种方法绝对不可能达到游戏要求的那样 仅仅10次以下就能完成游戏 所以还有很打要改动的 或者整个思路就不对 现在智能想想怎么能尽量减少 发送分析次数了
2007年12月27日 17点12分 2
level 2
youzhisen 楼主
继续顶起~~~郁闷
2007年12月28日 02点12分 3
level 0
为什么就没人来看呢
2007年12月29日 12点12分 4
1