news 2026/5/8 6:30:41

USACO历年白银组真题解析 | 2010年3月

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
USACO历年白银组真题解析 | 2010年3月

​欢迎大家订阅我的专栏:算法题解:C++与Python实现!
本专栏旨在帮助大家从基础到进阶 ,逐步提升编程能力,助力信息学竞赛备战!

专栏特色
1.经典算法练习:根据信息学竞赛大纲,精心挑选经典算法题目,提供清晰的代码实现与详细指导,帮助您夯实算法基础。
2.系统化学习路径:按照算法类别和难度分级,从基础到进阶,循序渐进,帮助您全面提升编程能力与算法思维。

适合人群:

  • 准备参加蓝桥杯、GESP、CSP-J、CSP-S等信息学竞赛的学生
  • 希望系统学习C++/Python编程的初学者
  • 想要提升算法与编程能力的编程爱好者

附上汇总贴:USACO历年白银组真题解析 | 汇总-CSDN博客


P6183 The Rock Game

【题目来源】

洛谷:P6183 [USACO10MAR] The Rock Game S - 洛谷

【题目描述】

在奶牛回家休息和娱乐之前,Farmer John 希望它们通过玩游戏获得一些智力上的刺激。

游戏板由n nn个相同的洞组成,这些洞最初都是空的。一头母牛要么用石头盖住一个空的洞,要么揭开一个先前被盖住的洞。游戏状态的定义是所有洞是否被石头覆盖的情况。

游戏的目标是让奶牛到达每个可能的游戏状态一次,最后回到初始状态。

以下是他们其中一次游戏的示例(空的洞用O表示,用石头盖住的洞用X表示):

时刻洞 1洞 2洞 3描述
0 00OOO一开始所有的洞都是空的
1 11OOX盖上洞 3
2 22XOX盖上洞 1
3 33XOO打开洞 3
4 44XXO盖上洞 2
5 55OXO打开洞 1
6 66OXX盖上洞 3
7 77XXX盖上洞 1

现在牛被卡住玩不下去了!他们必须打开一个洞,然而不管他们打开哪个洞,他们都会到达一个他们已经到达过的状态。例如,如果他们从第二个洞中取出岩石,他们将到达他们在时刻2 22已经访问过的状态(X O X)。

下面是一个 3 个孔的有效解决方案:

时间洞 1洞 2洞 3描述
0 00OOO一开始所有的洞都是空的
1 11OXO盖上洞 2
2 22OXX盖上洞 3
3 33OOX打开洞 2
4 44XOX盖上洞 1
5 55XXX盖上洞 2
6 66XXO打开洞 3
7 77XOO打开洞 2
8 88OOO打开洞 1,恢复到原来的状态

现在,奶牛们厌倦了这个游戏,它们想找你帮忙。

给定n nn,求游戏的有效解决方案序列。如果有多个解决方案,则输出任意一个

【输入】

仅一行,一个整数n nn

【输出】

2 n + 1 2^n+12n+1行,每行一个长度为n nn的字符串,其中只包含字符OX,该行中的第i ii个字符表示第i ii个孔在此状态下是被覆盖还是未覆盖,第一行和最后一行必须全部都是O

【输入样例】

3

【输出样例】

OOO OXO OXX OOX XOX XXX XXO XOO OOO

【解题思路】

【算法标签】

《洛谷 P6183 The Rock Game》 #深度优先搜索,DFS# #USACO# #Special judge# #2010#

【代码详解】

#include<bits/stdc++.h>usingnamespacestd;intn,a[20],vis[65536];intans[65536][20];intcalc()// 将二进制数转为十进制数{intans=0;for(inti=1;i<=n;i++){ans=ans*2+a[i];}returnans;}voiddfs(intstep){if(step==pow(2,n)){// 当step等于2^n,就进行输出for(inti=1;i<=pow(2,n);i++){// 遍历ans二维数组for(intj=1;j<=n;j++){if(ans[i][j]==1)cout<<"X";// 如果当前位置为1就输出Xelsecout<<"O";// 否则就输出O}cout<<endl;// 每输出完后就换一行}exit(0);// 只要完成一组输出,就结束程序}for(inti=1;i<=n;i++){// 遍历1到n个位置a[i]=!a[i];// 对当前位置进行取反操作if(vis[calc()]==1){// 如果当前二进制数访问过a[i]=!a[i];// 还原现场continue;// 继续下一次循环}vis[calc()]=1;// 如果这个数之前没有出现过,则标记为1for(intj=1;j<=n;j++){// 使用二维数组记录下当前二进制数ans[step][j]=a[j];}dfs(step+1);// 进行下一次搜索vis[calc()]=0;// 还原现场a[i]=!a[i];}}intmain(){cin>>n;// 输入nfor(inti=1;i<=n;i++){// 先输出第一行全Ocout<<'O';}cout<<endl;vis[0]=1;// 标记全0的二进制数已经访问过dfs(1);// 进行dfs深搜return0;}

【运行结果】

3 OOO XOO XXO OXO OXX XXX XOX OOX OOO
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/6 11:11:00

知识服务的静默革命:当AI智能体成为价值交付的新基座|创客匠人

艾瑞咨询《2025知识服务生态报告》揭示了一个耐人寻味的拐点&#xff1a;用户年均课程购买量下降21.7%&#xff0c;而具备交互能力的工具型服务使用频次却激增134%。更值得关注的是&#xff0c;73.6%的用户表示“愿意为能直接产出结果的系统付费&#xff0c;而非仅获取知识”。…

作者头像 李华
网站建设 2026/5/2 23:35:09

【开题答辩全过程】以 基于springboot网络游戏账号租赁以及出售系统为例,包含答辩的问题和答案

个人简介一名14年经验的资深毕设内行人&#xff0c;语言擅长Java、php、微信小程序、Python、Golang、安卓Android等开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。感谢大家的…

作者头像 李华
网站建设 2026/4/29 13:21:01

算法面试必刷:动态规划的核心思想与10个经典实战例题

在当今科技行业的招聘环境中&#xff0c;算法面试已经成为衡量工程师技术能力的重要标准。根据谷歌2023年发布的《全球技术招聘趋势报告》&#xff0c;超过92%的大型科技公司在面试中设置了算法问题环节&#xff0c;其中动态规划类问题占比达到37%&#xff0c;成为考察频率最高…

作者头像 李华
网站建设 2026/5/3 17:39:28

互联网大厂Java求职面试实战:核心技术、微服务与AI应用全解析

互联网大厂Java求职面试实战&#xff1a;核心技术、微服务与AI应用全解析 在支付与金融服务场景下&#xff0c;一场互联网大厂的Java面试正在紧张进行。严肃的面试官与搞笑的水货程序员谢飞机展开了一场充满技术细节与业务逻辑的问答&#xff0c;涵盖了Java核心技术、构建工具、…

作者头像 李华
网站建设 2026/5/1 10:15:25

必收藏!AI浪潮下程序员/小白破局指南,2026校招报告揭露的职场真相

前阵子整理学习资料时&#xff0c;偶然翻到一份2026届校招市场AI人才需求行业报告&#xff0c;密密麻麻的数据图表和趋势解析&#xff0c;瞬间让我想起上周和老同事们的聚餐——本应热闹畅谈的饭局&#xff0c;却因为一位发小的吐槽&#xff0c;蒙上了一层沉重的底色&#xff0…

作者头像 李华