news 2026/6/21 18:54:24

UVa 555 Bridge Hands

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
UVa 555 Bridge Hands

题目描述

题目要求模拟发牌过程,并对每个玩家的手牌进行排序,按花色(梅花♣\clubsuit、方块♢\diamondsuit、黑桃♠\spadesuit、红桃♡\heartsuit)和点数(2<3<⋯<T<J<Q<K<A2 < 3 < \dots < \text{T} < \text{J} < \text{Q} < \text{K} < \text{A}2<3<<T<J<Q<K<A)升序排列。输出四位玩家的手牌,顺序为S\texttt{S}SW\texttt{W}WN\texttt{N}NE\texttt{E}E

输入格式

输入包含多个测试用例。每个测试用例第一行是一个字符,表示发牌人(N\texttt{N}NE\texttt{E}ES\texttt{S}SW\texttt{W}W)。接下来两行,每行262626个字符,表示一副牌(每张牌由花色和点数两个字符组成,共525252个字符)。输入以#结束。

输出格式

对于每个测试用例,输出四行,格式为玩家: 牌1 牌2 ...,玩家顺序为S\texttt{S}SW\texttt{W}WN\texttt{N}NE\texttt{E}E

样例

输入

N CQDTC4D8S7HTDAH7D2S3D6C6S6D9S4SAD7H2CKH5D3CT8SC9H3C3 DQS9SQDJH8HAS2SKD4H4S5C7SJC8DKC5C2CAHQCJSTH6HKH9D5HJ #

输出

S:C3C5C7CTCJ D9DTDJ S3SKH2H9HT W:C2C4CK D4D5D6DQDA S4S8ST SJH8 N:C6C8C9CA D8S9SAH4H5H6H7HJHA E:CQ D2 D3 D7 DK S2 S5 S6 S7 SQ H3 HQ HK

题目分析

本题的核心是模拟发牌和排序。

发牌规则

  • 发牌人先发给自己左手边的玩家,按顺时针顺序依次发牌。
  • 525252张牌,每位玩家得到131313张。

排序规则

  • 花色顺序:C<D<S<H\texttt{C} < \texttt{D} < \texttt{S} < \texttt{H}C<D<S<H
  • 点数顺序:2<3<4<5<6<7<8<9<T<J<Q<K<A2 < 3 < 4 < 5 < 6 < 7 < 8 < 9 < \text{T} < \text{J} < \text{Q} < \text{K} < \text{A}2<3<4<5<6<7<8<9<T<J<Q<K<A

输出顺序

输出四行,顺序为S\texttt{S}SW\texttt{W}WN\texttt{N}NE\texttt{E}E,即南、西、北、东。

算法步骤

  1. 确定发牌起始玩家(发牌人的左手边)。
  2. 读取525252张牌,依次分配给四位玩家。
  3. 对每位玩家的手牌按花色和点数排序。
  4. 按指定顺序输出。

复杂度分析

O(52log⁡13)O(52 \log 13)O(52log13),可接受。

代码实现

// Bridge Hands// UVa ID: 555// Verdict: Accepted// Submission Date: 2016-08-12// UVa Run Time: 0.040s//// 版权所有(C)2016,邱秋。metaphysis # yeah dot net#include<bits/stdc++.h>usingnamespacestd;map<char,int>suits={{'C',0},{'D',1},{'S',2},{'H',3}};map<char,int>ranks={{'2',0},{'3',1},{'4',2},{'5',3},{'6',4},{'7',5},{'8',6},{'9',7},{'T',8},{'J',9},{'Q',10},{'K',11},{'A',12}};map<int,char>dealers={{0,'S'},{1,'W'},{2,'N'},{3,'E'}};map<char,int>offset={{'S',3},{'W',2},{'N',1},{'E',0}};string suit_text="CDSH",rank_text="23456789TJQKA";structcard{intsuit,rank;booloperator<(constcard&another)const{if(suit!=another.suit)returnsuit<another.suit;elsereturnrank<another.rank;}};intmain(intargc,char*argv[]){cin.tie(0);cout.tie(0);ios::sync_with_stdio(false);chardealer,suit,rank;while(cin>>dealer,dealer!='#'){vector<vector<card>>cards(4,vector<card>(13));for(inti=0;i<13;i++)for(intj=0;j<4;j++){cin>>suit>>rank;cards[j][i].suit=suits[suit];cards[j][i].rank=ranks[rank];}for(inti=0;i<4;i++)sort(cards[i].begin(),cards[i].end());for(autod:dealers){cout<<d.second<<':';for(autoc:cards[(offset[dealer]+d.first)%4])cout<<' '<<suit_text[c.suit]<<rank_text[c.rank];cout<<'\n';}}return0;}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/21 18:53:43

QN908x Sigma-Delta ADC配置、校准与工程实践全解析

1. 项目概述与ADC核心价值在嵌入式物联网设备开发中&#xff0c;模拟信号采集是连接物理世界与数字世界的桥梁。无论是监测环境温湿度、检测电池电量&#xff0c;还是读取各类传感器的微弱输出&#xff0c;都离不开一个关键部件——模数转换器&#xff08;ADC&#xff09;。今天…

作者头像 李华
网站建设 2026/6/21 18:48:59

PowerPC片上ROM启动:从SD卡/EEPROM引导U-Boot的完整指南

1. 项目概述与核心价值在嵌入式系统开发&#xff0c;尤其是基于PowerPC架构的处理器&#xff08;如Freescale/NXP的MPC85xx/P1xxx系列&#xff09;进行产品设计时&#xff0c;我们常常面临一个基础但关键的抉择&#xff1a;系统从哪里启动&#xff1f;传统的NOR Flash启动方案虽…

作者头像 李华
网站建设 2026/6/21 18:36:21

185、计算摄影的视频应用:AI EIS、AI 降噪、AI 超分在视频实时处理中的挑战

185、计算摄影的视频应用:AI EIS、AI 降噪、AI 超分在视频实时处理中的挑战 去年Q3,我接手一个旗舰机项目,客户反馈视频防抖在跑步场景下画面“果冻感”严重,边缘像被揉过的纸。我第一反应是陀螺仪数据同步有问题,结果查了三天,发现是AI EIS模型在帧间运动估计时,对高频…

作者头像 李华
网站建设 2026/6/21 18:34:34

国内合规使用Gemini API的两步实操指南

1. “两步实现国内使用 Gemini”这个标题到底在说什么&#xff1f; “两步实现国内使用 Gemini”——看到这个标题&#xff0c;我第一反应不是兴奋&#xff0c;而是皱眉。不是因为做不到&#xff0c;而是因为它太像一句被过度简化的营销话术。就像当年“三分钟学会Python”“一…

作者头像 李华