作者TonyQ (骨头)
看板java
标题Re: [问题] 以Java做麻将判别胡牌或听牌的程式
时间Wed Jun 11 22:39:17 2008
※ 引述《ChonPiggy (崇小猪)》之铭言:
: 这是我期末专题自己挑的题目..
: 其实整体是要写出有连线功能的双人麻将
: 我并不是想问整个要怎麽写..
: 只是想询问一个大概的方向..
: 我现在遇到的问题是..
: 该如何做确认胡牌的判别..
: 我查过文章..
: 有的人说可以先把将眼挑出来..
: 之後判别其他的三张部份..
: 可是一副牌拿到我不知道怎麽判别将眼..
: 因为也有可能那是顺的部份阿..
: 例如我想到的判别..
: 一种是先判别顺子>>三张>>将眼
: 那例如我拿到..
: 11123444455567899
: 这样的话..
: 判别会先把123 456 789 拿掉..
: 只剩11 444 55 9
: 这样就不能胡了..
: 那如果我判别顺序是三张>>顺子>>将眼的话..
: 12344456777999 123 这样..
: 一开始把444 777 999 拿掉..
: 剩下123 56 123 这样也不能胡了呀@@
: 我到底该怎麽判断才好..
: 或者应该是其他方式?
两个都做,我是这样想,把
能当眼的先挑出来,
以有眼睛的角度去验证其他是不是可行的,
像上面眼睛的可能性就只有11,44,55,99
然後再从这四个眼睛,去验证扣掉眼睛外,
剩下的部份是不是满足解。
记得,
你正常人脑袋怎麽判断,程式就怎麽判断,
你只要想办法努力重现这个过程就好。
11123444455567899
以从11出发的角度
你只要验证123444455567899 满足五组就好
从44出发的角度
111234455567899 满足五组就好
从55出发的角度
111234444567899
从99出发的角度
111234444555678
至於子问题要先判断三张还是顺子,我觉得同眼的处理方式,
先把滤出三张跟顺子的式子写出来,然後开始做交叉测试。
你要把一个17张得排组,换成15张,再换成12张,
再换成9张,一路换到变成3张,
最晚到三张时就可以验证是可以胡的,
不能胡的在到三张的过程中应该会被淘汰掉。
这应该是这问题的最佳子结构,把所有子结构都解出来,就能得到正解了。
--
I am a person, and I am always thinking .
Thinking in love , Thinking in life ,
Thinking in why , Thinking in worth.
I can't believe any of what ,
I am just thinking then thinking ,
but worst of all , most of mine is thinking not actioning...
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.134.27.68
1F:推 ChonPiggy:感谢T大特地开TALK教我好多@@ 06/12 00:07