当前位置: 代码迷 >> C语言 >> 一个有趣的题目[已解决]
  详细解决方案

一个有趣的题目[已解决]

热度:102   发布时间:2006-11-28 19:29:20.0
一个有趣的题目[已解决]


我们分别以 S、H、D 及 C 来代表黑桃,红心,方块及梅花,并以数字 1 至 13 来代表 A、2、…、Q、K 等牌点,例如┱ H1 为红心 A,S13 为黑桃 K。

牌局结束时,由各玩家持有的有关计分的牌(计分牌)仅有 S12 (猪),所有红心牌,D11 (羊)及 C10 (加倍)等16张牌。其它牌均弃置不计。若未持有这 16 张牌之任一张则以得零分计算。

若持有 C10 的玩家只有该张牌而没有任何其它牌则得 +50 分,若除了 C10 还有其它计分牌,则将其它计分牌所得分数加倍计算。

若红心牌不在同一家,则 H1 至 H13 等 13 张牌均以负分计,其数值为 -50,-2,-3,-4,-5,-6,-7,-8,-9,-10,-20,-30,-40。而且 S12 与 D11 分别以 -100 及 +100 分计算。

若红心牌 H1 至H13 均在同一家,有下列情形┱


所有红心牌以+200分计算。

若 S12、D11 皆在吃下所有红心牌之一家,则此玩家得 +500 分。

而 C10 还是以前面所述原则计算之。

例一:若各玩家持有计分牌如下:(每列代表一玩家所持有之牌)


S12 H3 H5 H13
D11 H8 H9
C10 H1 H2 H4 H6 H7
H10 H11 H12
则各家之得分依序为:-148、+83、-138 及 -60。


例二:若各玩家持有计分牌如下:(第四家未持有任何计分牌)


H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13
S12 C10
D11


则各家之得分依序为:+200、-200、+100 及 0。


例三:若有一玩家持有所有 16 张计分牌,则得 +1000 分。其余三家均得零分。


输入

每个输入文件由多组测试数据构成,每组测试数据有四行,每一行第一个数为该玩家所持有计分牌总数,而后列出其所持有之所有计分牌,牌数与各计分牌均以一个以上的空格分开。相邻两组测试数据之间不会有空白行,读到四家持牌数都为 0 表示文件结束。


输出
每一行输出一组测试数据对应的结果,依次输出各家所得分数,共四个整数(含正负号,0 除外),相邻两个整数之间以一个空格分开,符号和数字间不可以有空格。每组输出间不需要有空白行。

测试用例 0
测试输入
1 4 S12 H3 H5 H13
2 3 D11 H8 H9
3 6 C10 H1 H2 H4 H6 H7
4 3 H10 H11 H12
5 13 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13
6 2 S12 C10
7 1 D11
8 0
9 0
10 0
11 0
12 0

期待的输出
1 -148 +83 -138 -60
2 +200 -200 +100 0
时间限制 1秒
内存限制 1024KB

[此贴子已经被作者于2006-11-29 23:13:15编辑过]

搜索更多相关的解决方案: 红心  

----------------解决方案--------------------------------------------------------
很有趣的一道题
----------------解决方案--------------------------------------------------------
模拟+搜索
----------------解决方案--------------------------------------------------------
什么意思?能详细些吗?
----------------解决方案--------------------------------------------------------

依次循环搜索每一张牌,按照题目规则进行记分,就是if判断了,模拟记分策略

若持有 C10 的玩家只有该张牌而没有任何其它牌则得 +50 分,若除了 C10 还有其它计分牌,则将其它计分牌所得分数加倍计算。

若红心牌不在同一家,则 H1 至 H13 等 13 张牌均以负分计,其数值为 -50,-2,-3,-4,-5,-6,-7,-8,-9,-10,-20,-30,-40。而且 S12 与 D11 分别以 -100 及 +100 分计算。

若红心牌 H1 至H13 均在同一家,有下列情形┱


所有红心牌以+200分计算。

若 S12、D11 皆在吃下所有红心牌之一家,则此玩家得 +500 分。

而 C10 还是以前面所述原则计算之。

直到所有的牌记分完毕,循环结束,输出记分

[此贴子已经被作者于2006-11-29 20:59:37编辑过]


----------------解决方案--------------------------------------------------------

这样做好像CPU超时,你做下试试


----------------解决方案--------------------------------------------------------
以下是引用yelo20053533在2006-11-29 20:53:43的发言:

这样做好像CPU超时,你做下试试

超时?不可能.
只遍历一遍,怎么可能超时.
----------------解决方案--------------------------------------------------------
你是怎么做的?我的程序确实超时
----------------解决方案--------------------------------------------------------
把你的程序发出来看看.
----------------解决方案--------------------------------------------------------
11

[此贴子已经被作者于2006-11-29 23:13:48编辑过]



----------------解决方案--------------------------------------------------------
  相关解决方案