现在的位置: 首页 > 综合 > 正文

拱猪计分(normal)

2013年12月23日 ⁄ 综合 ⁄ 共 4409字 ⁄ 字号 评论关闭

【模拟试题】:拱猪计分(normal)

Time Limit:1000MS  Memory Limit:65536K
Total Submit:39 Accepted:13

Description

拱猪是一种很有趣的扑克牌游戏。 即使你不知道它的玩法,你也可以由它的计分方式来了解它的趣味性。 假设在此我们仅考虑四个人的拱猪牌局,本题要求你根据下面的计分规则,在牌局结束时计算四位玩家所得分数。
1.我们分别以 S、H、D 及 C 来代表黑桃,红心,方块及梅花,并以数字 1 至 13 来代表 A、2、…、Q、K 等牌点,例如︰ H1 为红心 A,S13 为黑桃 K。
2.牌局结束时,由各玩家持有的有关计分的牌(计分牌)仅有 S12 (猪),所有红心牌,D11 (羊)及 C10 (加倍)等16张牌。其它牌均弃置不计。若未持有这 16 张牌之任一张则以得零分计算。
3.若持有 C10 的玩家只有该张牌而没有任何其它牌则得 +50 分,若除了 C10 还有其它计分牌,则将其它计分牌所得分数加倍计算。
4.若红心牌不在同一家,则 H1 至 H13 等 13 张牌均以负分计,其数值为 -50,-2,-3,-4,-5,-6,-7,-8,-9,-10,-20,-30,-40。而且 S12 与 D11 分别以 -100 及 +100 分计算。
5.若红心牌 H1 至H13 均在同一家,有下列情形︰
o所有红心牌以+200分计算。
o若 S12、D11 皆在吃下所有红心牌之一家,则此玩家得 +500 分。
o而 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 分。其余三家均得零分。

Input

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

Output

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

Sample Input

 

Sample Output


#include <stdio.h>
#include <string.h>
#include <memory.h>
 
int main(void)
{
    int flag=0,h;
    int nn[5]={0},tt[5]={0},hc[]={0,-50,-2,-3,-4,-5,-6,-7,-8,-9,-10,-20,-30,-40};
    int i,j,k,d11,s12,temp,c10;
    char ss[20][6],hh[20][6]={"0","H1","H2","H3","H4","H5","H6","H7","H8","H9","H10","H11","H12","H13"};
   
    
    while (1)
    {
         
          memset(nn,0,sizeof(nn));
          memset(tt,0,sizeof(tt));
         
          for(i=1 ; i<= 4 ; i++)
          {
         memset(ss,'/0',sizeof(ss));
                  scanf("%d",&nn[i]);
                  for(j=1 ; j<nn[i] ; j++)
                  scanf(" %s",ss[j]);
      if(j <= nn[i])
      scanf(" %s",ss[j]);
                  
                  if(nn[i] == 0)
      tt[i] = 0 ;
                  else if ( nn[i] == 1 && strcmp(ss[1],"C10") == 0)
       tt[i] = 50 ;
                  else
                  {
                       if ( nn[i] == 16)
        tt[i] = 1000 ;
                       else
                       {
         s12 = 0 ;
         d11 = 0 ;
         c10 = 0 ;
         for(h=1 ; h<= nn[i] ; h++)
         {
        if(strcmp(ss[h],"S12")== 0)
        s12 = 1 ;
        else if(strcmp(ss[h],"D11")==0)
        d11 = 1 ;
        else if(strcmp(ss[h],"C10")== 0)
        c10 = 1 ;
       }
                      
       if ( nn[i] >= 13)
       {
        temp = 0 ;
        for(k=1 ; k<= nn[i] ; k++)
         for(h=1 ; h<= 13 ; h++)
         if(strcmp(ss[k],hh[h]) == 0)
         {
          temp ++ ;
          break ;
         }
        if(temp == 13)
        {
                                   tt[i] = 200 ;
                                   if( s12 && d11)
          tt[i] += 300 ;
                                   else if(s12)
          tt[i] -= 100 ;
                                   else if(d11)
          tt[i] += 100 ;
                                   if(c10)
          tt[i] *= 2 ;
        }
        else
        {
                                   for(k=1 ; k<= nn[i] ; k++)
                                   for(h=1 ; h<= 13 ; h++)
                                   if( strcmp(ss[k],hh[h]) == 0)
                                   {
                                       tt[i] += hc[h] ;
                                       break ;
                                   }
                                   if( s12 )
         tt[i] -= 100 ;
                                   if( d11 )
         tt[i] += 100 ;
                                   if( c10 )
         tt[i] *= 2 ;
        }
               
       }
                           else
         {
                                  for(k=1 ; k<= nn[i] ; k++)
                                   for(h=1 ; h<= 13 ; h++)
                                   if( strcmp(ss[k],hh[h]) == 0)
                                   {
                                       tt[i] += hc[h] ;
                                       break ;
                                   }
                                   if( s12 )
                                   tt[i] -= 100 ;
                                   if( d11 )
                                   tt[i] += 100 ;
                                   if( c10 )
                                   tt[i] *= 2 ;
         }
        }    
      }                
    }
                     
         if( nn[1]== 0 && nn[2] == 0 && nn[3] == 0 && nn[4] == 0)
          break ;
         
         for(k=1 ; k<= 4 ; k++)
   {
                 if(tt[k] > 0)
                 printf("+%d ",tt[k]);
                 else
                 printf("%d ",tt[k]);
   }
         
          
    }
    system("pause");
       
    return 0 ;
}

-148 +83 -138 -60+200 -200 +100 0

 

4  S12  H3  H5  H133  D11  H8  H96  C10  H1  H2  H4  H6  H73  H10  H11 H1213 H1  H2  H3  H4  H5  H6  H7  H8  H9  H10  H11  H12  H13  2  S12  C101  D1100000

 

抱歉!评论已关闭.