news 2026/6/3 10:06:13

UVa 379 Hi-Q

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
UVa 379 Hi-Q

题目描述

Hi-Q\texttt{Hi-Q}Hi-Q是一种流行的单人纸牌游戏。游戏板呈十字形,有333333个小孔,编号如下:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37

实际上,标准Hi-Q\texttt{Hi-Q}Hi-Q棋盘有333333个孔(编号111333333),排列成十字形。游戏开始时,某些孔中有木钉,其他孔为空。游戏规则:将一个木钉水平或垂直跳过相邻的木钉,落入空孔,被跳过的木钉被移除。

给定初始配置,按以下规则模拟游戏:

  1. 始终选择目标孔编号最大的合法移动
  2. 如果多个移动有相同的最大目标孔,选择源孔编号最大的移动
  3. 重复直到没有合法移动
  4. 输出剩余木钉所在孔的编号之和

输入格式

第一行包含整数NNN1≤N≤101 \leq N \leq 101N10),表示游戏实例数量。接下来的行描述每个实例:按递增顺序列出初始有木钉的孔编号,以000结束。

输出格式

第一行输出HI Q OUTPUT。对于每个实例,输出一行,包含最终配置中剩余木钉所在孔的编号之和。最后一行输出END OF OUTPUT

样例输入

4 10 12 17 19 25 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 0

样例输出

HI Q OUTPUT 51 0 561 98 END OF OUTPUT

题目分析

问题的本质

这是一个棋盘游戏模拟问题。需要:

  1. 预先生成所有可能的合法移动(跳棋规则)
  2. 按优先级顺序选择移动
  3. 模拟直到无法移动

棋盘布局

Hi-Q\texttt{Hi-Q}Hi-Q棋盘有333333个孔,排列成十字形。孔编号如下:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33

实际上,标准编号略有不同,但代码中使用7×77 \times 77×7网格映射孔编号。

移动规则

  • 只能水平或垂直移动
  • 必须跳过相邻的一个木钉
  • 目标孔必须为空
  • 被跳过的木钉被移除

优先级规则

  1. 目标孔编号最大
  2. 相同目标孔时,源孔编号最大

参考代码

// High-Q// UVa ID: 379// Verdict: Accepted// Submission Date: 2016-07-04// UVa Run Time: 0.000s//// 版权所有(C)2016,邱秋。metaphysis # yeah dot net#include<bits/stdc++.h>usingnamespacestd;// 移动结构体:源孔、中间孔、目标孔structjump{intfrom,middle,to;booloperator<(constjump&another)const{if(to!=another.to)returnto>another.to;// 目标孔大的优先elsereturnfrom>another.from;// 源孔大的优先}};// 7x7 网格表示棋盘,0 表示无效位置intboard[7][7]={{0,0,1,2,3,0,0},{0,0,4,5,6,0,0},{7,8,9,10,11,12,13},{14,15,16,17,18,19,20},{21,22,23,24,25,26,27},{0,0,28,29,30,0,0},{0,0,31,32,33,0,0}};intoffset[4][2]={{0,1},{1,0},{0,-1},{-1,0}};intmain(intargc,char*argv[]){ios::sync_with_stdio(false);// 预生成所有合法移动vector<jump>jumps;for(inti=0;i<7;i++)for(intj=0;j<7;j++)if(board[i][j]){for(intk=0;k<4;k++){intni=i+offset[k][0],nj=j+offset[k][1];intnni=ni+offset[k][0],nnj=nj+offset[k][1];if(ni>=0&&ni<7&&nj>=0&&nj<7&&nni>=0&&nni<7&&nnj>=0&&nnj<7&&board[ni][nj]&&board[nni][nnj])jumps.push_back({board[i][j],board[ni][nj],board[nni][nnj]});}}// 按优先级排序sort(jumps.begin(),jumps.end());intN,hole,holes[40];cin>>N;cout<<"HI Q OUTPUT"<<endl;for(inti=1;i<=N;i++){// 初始化:全部为空memset(holes,0,sizeof(holes));// 读取初始有木钉的孔while(cin>>hole,hole)holes[hole]=1;// 模拟游戏while(true){boolupdated=false;for(auto&j:jumps)if(holes[j.from]&&holes[j.middle]&&!holes[j.to]){updated=true;holes[j.from]=0;holes[j.middle]=0;holes[j.to]=1;break;// 每次只执行优先级最高的一个移动}if(!updated)break;}// 计算剩余木钉的编号之和intsumOfHoles=0;for(inti=1;i<=33;i++)if(holes[i])sumOfHoles+=i;cout<<sumOfHoles<<endl;}cout<<"END OF OUTPUT"<<endl;return0;}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/3 10:03:48

成都制造企业图纸外发总失控,AI智能体该先管哪些权限证据?

图纸外发失控&#xff0c;风险往往不在“发出去”这一刻很多成都制造企业在扩产、外协加工、供应商试制或客户项目交付时&#xff0c;都会遇到图纸和技术资料外发。表面看&#xff0c;这是研发、工艺、采购和供应商之间的日常协作&#xff1b;真正出问题时&#xff0c;往往已经…

作者头像 李华
网站建设 2026/6/3 10:00:19

保姆级教程:用OpenIPC+SCC338Q+WFB-NG搭建你的第一套FPV数字图传系统

从零搭建FPV数字图传系统&#xff1a;OpenIPCSCC338QWFB-NG实战指南第一次接触无人机数字图传系统时&#xff0c;我被各种专业术语和复杂的配置流程搞得晕头转向。作为DIY爱好者&#xff0c;我们往往更关注如何让设备跑起来&#xff0c;而不是深究背后的技术原理。本文将用最直…

作者头像 李华
网站建设 2026/6/3 10:00:06

2026年最新英语听说教学神器 功能详解及选购避坑实用指南

一、英语听说教学的核心痛点拆解做了5年英语听说教学技术落地&#xff0c;接触过不下20款同类工具&#xff0c;我们团队在实践中发现&#xff0c;目前行业普遍存在三个共性痛点&#xff1a;一是人工评测效率极低&#xff0c;一个50人班的口语作业&#xff0c;老师逐一听完打分、…

作者头像 李华
网站建设 2026/6/3 9:58:03

网盘直链解析技术深度解析与实践指南

网盘直链解析技术深度解析与实践指南 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 &#xff0c;支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼云盘 / 迅雷云盘 / 夸克网盘 …

作者头像 李华