#16825: 點數轉換


freedom501999@gmail.com (帥氣魔方生)

學校 : 不指定學校
編號 : 88611
來源 : [39.8.203.54]
最後登入時間 :
2019-05-30 22:56:25
d545. 2. 抽紙牌(poker) -- 98學年度台北市資訊學科能力競賽 | From: [125.224.175.40] | 發表日期 : 2019-02-10 19:31

根據規則,先比數字才比花色

所以只要將讀到的牌轉成一個數字,就可以排序了

桃 K = 52、心 K = 51、方 K = 50、梅 K = 49
桃 Q = 48、心 Q = 47、方 Q = 46、梅 Q = 45
.......
桃 2 = 8、心 2 = 7、方 2 = 6、梅 2 = 5
桃 A = 4、心 A = 3、方 A = 2、梅 A = 1

不會再反白下面 ( C 的 )

#include <stdio.h>
int main(void)
{
      char a;
      int n, i, b, j;
      int poker[52]={0};
      scanf("%d", &n);

/* 讀每張牌的測資 */
      for(i=0;i<n;i++)
      {
            scanf(" %c %d", &a, &b);
            switch(a)
            {
                  case 'S':
                        poker[i]=4*b;
                        break;
                  case 'H':
                        poker[i]=4*b-1;
                        break;
                  case 'D':
                        poker[i]=4*b-2;
                        break;
                  case 'C':
                        poker[i]=4*b-3;
                        break;
            }
      }

/* 插入排序,由大到小 */
      for(i=1;i<n;i++)
      {
            b= poker[i];
            j=i;
            while (j>0 && poker[j-1]<b)
            {
                  poker[j]=poker[j-1];
                  j--;
            }
            poker[j]=b;
      }

/* 輸出 */
      scanf("%d", &b);
      switch(poker[b-1]%4)
      {
            case 0:
                  printf("S ");
                  break;
            case 3:
                  printf("H ");
                  break;
            case 2:
                  printf("D ");
                  break;
            case 1:
                  printf("C ");
                  break;
      }
      printf("%d", (poker[b-1]-1)/4+1);
      return 0;
}

 
ZeroJudge Forum