尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
UVa 635 Clock Solitaire
题目描述钟面纸牌Clock Solitaire\texttt{Clock Solitaire}Clock Solitaire是一种使用一副525252张标准扑克牌的纸牌游戏。牌面点数与钟面小时对应关系如下J\texttt{J}J对应111点钟2\texttt{2}2到10\texttt{10}10分别对应222到101010点钟A\texttt{A}A对应111111点钟Q\texttt{Q}Q对应121212点钟K\texttt{K}K对应钟面中心游戏开始时将525252张牌按顺序发成131313堆121212个钟点位置加中心每堆444张牌牌面朝下。第一轮翻开中心堆最上面的牌然后根据翻开牌的点数将其放到对应位置K\texttt{K}K放回中心并翻开该位置最上面的牌如此循环。若最终525252张牌全部被翻开则游戏成功若某次需要翻开某堆牌但该堆已空则游戏失败。给定一个长度为525252的牌序列按顺时针从111点钟堆的最下面到中心堆的最上面依次给出考虑该序列的525252个循环移位每个移位对应另一种发牌顺序问其中有多少个移位能导致游戏成功。输入格式输入包含多组数据每组数据为一行包含525252个字符字符为J、2–9、T代表101010、A、Q、K。输入以单独一行0结束。输出格式对于每组牌序列输出一个整数表示该序列的525252个循环移位中成功的个数。样例输入7 J 9 3 J Q K A 2 3 4 5 6 7 8 9 T 8 Q K A 2 3 4 5 6 7 8 9 1 J Q K A 2 3 4 5 6 7 8 9 T J Q K A 2 1 4 5 6 0输出4题目分析本题模拟钟面纸牌游戏并统计循环移位的成功次数。由于只有525252张牌每个循环移位独立模拟一次每次模拟最多翻开525252张牌因此总操作数为52×52270452 \times 52 270452×522704非常小可以直接模拟。关键在于理解牌的布局方式给定序列按“从111点钟堆的最下面到中心堆的最上面”顺序给出即前444张牌属于111点钟堆从下到上第555到888张属于222点钟堆……第494949到525252张属于中心堆。游戏开始时中心堆最上面的牌是序列中第525252张即最后一格。每次翻开一张牌后根据其点数决定下一次翻开哪一堆的最上面一张。循环移位将整个序列循环左移一位相当于改变发牌时从哪张牌开始作为第一堆的最下面。例如原序列abcdef...循环左移一位得到bcdef...a这对应另一种发牌顺序。我们需要统计525252种移位中能成功完成游戏的数量。解题思路映射点数到堆索引建立从牌面字符到000到121212的映射其中000对应J\texttt{J}J111点钟111对应2\texttt{2}2……101010对应A\texttt{A}A111111点钟111111对应Q\texttt{Q}Q121212点钟121212对应K\texttt{K}K中心。这样翻开一张牌后下一个堆的索引即为该牌对应的映射值。模拟单次游戏使用二维数组cards[13][4]存储当前移位下每堆的444张牌按从下到上顺序。游戏开始时指针指向中心堆索引121212翻开该堆最上面一张牌即cards[12][0]。每翻开一张牌记录该堆已翻开数量uncovered[pointer]若该堆已翻开444张则游戏失败。否则根据牌面字符映射到下一个堆索引继续翻开该堆最上面一张。循环直到翻开的牌数达到525252成功或某堆已空失败。循环移位生成对于每个原始序列生成其525252个循环左移位对每个移位运行一次模拟统计成功的次数。复杂度每组数据525252个移位每个移位模拟最多525252步总操作约270427042704次非常快。复杂度分析对于每组输入循环移位数为525252每次模拟最多525252步时间复杂度为O(522)O(2704)O(52^2) O(2704)O(522)O(2704)。空间复杂度为O(52)O(52)O(52)用于存储牌堆。代码实现// Clock Solitaire// UVa ID: 635// Verdict: Accepted// Submission Date: 2016-08-30// UVa Run Time: 0.000s//// 版权所有C2016邱秋。metaphysis # yeah dot net#includebits/stdc.husingnamespacestd;intmain(){cin.tie(0);cout.tie(0);ios::sync_with_stdio(false);string lettersJ23456789TAQK;mapchar,intpiles;for(inti0;iletters.length();i)piles[letters[i]]i;charcard,cards[13][4];while(cincard,card!0){cin.putback(card);stringsequence(52,0);for(inti0;i52;i)cinsequence[i];intsuccess0;for(intk1;k52;k){for(inti0;i13;i)for(intj0;j4;j)cards[i][j]sequence[i*4j];intshifts0,uncovered[13];memset(uncovered,0,sizeof(uncovered));intpointer12;while(true){if(uncovered[pointer]3)break;uncovered[pointer];pointerpiles[cards[pointer][uncovered[pointer]-1]];shifts;}if(shifts52)success;sequence.push_back(sequence.front());sequence.erase(sequence.begin());}coutsuccess\n;}return0;}总结本题模拟了钟面纸牌游戏并通过循环移位测试了所有可能的发牌顺序。核心在于正确理解牌堆的存储顺序从下到上以及游戏规则每次翻开指定堆最上面一张。由于数据规模很小直接暴力模拟即可。该解法思路清晰实现简单适合作为模拟题的练习。
RELATED

相关推荐

终极指南:如何使用VisualCppRedist AIO一键修复Windows DLL缺失问题

终极指南:如何使用VisualCppRedist AIO一键修复Windows DLL缺失问题

终极指南:如何使用VisualCppRedist AIO一键修复Windows DLL缺失问题 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 你是否经常遇到"MSVCRT.dll…

📅 2026/9/12 4:55:14
Claude 中转站怎么选?国内开发者的稳定接入清单

Claude 中转站怎么选?国内开发者的稳定接入清单

🧭 适合人群:准备把 AI 编程助手接入日常开发,但还没确定入口、模型、费用和稳定性标准的开发者。 🚀 先把问题说清楚 很多人搜索“Claude 中转站”,并不是单纯想找一个地址,而是想解决三个现实问题&#…

📅 2026/10/10 23:22:08
RTSP 拉流与录制:IPC 摄像头本地录像完整方案

RTSP 拉流与录制:IPC 摄像头本地录像完整方案

RTSP 拉流与录制:IPC 摄像头本地录像完整方案 做 IPC 摄像头、无人售货柜、安防监控,RTSP 拉流和录制是基本功。这篇讲清楚:怎么稳定拉流、怎么存成文件、怎么按时间分片、断线怎么自动重连、延迟怎么优化——全是实际项目里踩过的坑。 大家好…

📅 2026/10/14 15:16:31
MORE NEWS

更多资讯

📰

湖北电工证培训视频全流程办理指南良心建议

湖北电工证培训视频全流程办理指南良心建议 之前考的证在外省能不能转过来,这个问题我见过太多人问了,尤其是像你这样从外地过来的,可能手上已经有了电工证,但又想在湖北这边落地,那到底能不能用,怎么转?今天就给你说个 良心建议…

📰

嘉兴电工证网上查询怎么查?郑州报考避坑指南全在这了

嘉兴电工证网上查询怎么查?郑州报考避坑指南全在这了 实操考试心里没底怕挂科,这是很多准备考电工证的朋友的真实写照。特别是刚接触电工行业的新手,对考试流程、内容、通过率都不太清楚,担心一不小心就挂掉,白白浪费时间和金钱。今天就来聊聊…

📰

郑州电工证资格证和操作证怎么考?考前押题别乱刷

郑州电工证资格证和操作证怎么考?考前押题别乱刷 你是不是也遇到过这种情况,听说电工证要考资格证和操作证,心里一万个问号, 不知道去哪报名怕被中介坑…

📰

广东省电工证换证多久拿证?工地太忙也能搞定

广东省电工证换证多久拿证?工地太忙也能搞定 工地太忙根本没时间复习考试,你是真的没时间,还是不知道怎么高效应对?广东省电工证换证流程其实并不复杂,只要掌握关键步骤, 多久拿证…

📰

电工证资格证和操作郑州报考避坑指南:三门峡建筑工人的实战经验

电工证资格证和操作郑州报考避坑指南:三门峡建筑工人的实战经验 你现在手里拿着一份电工证资格证和操作,找工作是不是已经快憋不住了?别急,我就是从三门峡干建筑出身,现在在郑州跑业务,今天这番话,全是咱们一线工人的血泪经验。…

📰

贺州电工证去哪里申,真实经历告诉你怎么搞定

贺州电工证去哪里申,真实经历告诉你怎么搞定 工地太忙根本没时间复习考试,这是我去年在贺州干工程时的真实经历,每天从早上六点干到晚上十点,连吃饭都得抢时间。当时想考个低压电工证,可是一看资料,头都大了。今天我就来聊聊,贺州电工证去哪里申这个问…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬