Uva 101: 木块问题(The Blocks Problem)

看着算法书看到了这一题,想着不能只看不做,就想着做了一下

算法书上的描述太抽象了,就网上找了其他的描述

当然去看英文描述是最准确的,算法书上说是哪一个oj网来着?我给忘了

STL还是很好用的

代码如下:

#include<vector>
#include<iostream>
#include<string>
using namespace std;
void search_num(int a, int &x, int &y);//找到a的位置
void homing(const int &x, const int &y);//第x堆,第y高的木块上方的木块归位
void move(const int &x, const int &y, const int &z);//第x堆,第y高的木块和上方的木块放在第z堆上方
vector<vector<int>> blocks;
int N;int main(void)
{cin >> N, blocks.resize(N);for(int i = 0; i < N; i++)blocks[i].push_back(i);string str1, str2;while(true){cin >> str1;if(str1 == "quit")  break;int a, b, xa, ya, xb, yb;cin >> a >> str2 >> b;search_num(a, xa, ya), search_num(b, xb, yb);if(xa == xb)  continue;if(str1 == "move"){homing(xa, ya);if(str2 == "onto")  homing(xb, yb);blocks[xa].pop_back(), blocks[xb].push_back(a);}else{if(str2 == "onto")  homing(xb, yb);move(xa, ya, xb);}}for(int i = 0; i < N; i++){cout << i << ':';for(auto it = blocks[i].begin(); it != blocks[i].end(); it++)cout << ' ' << *it;cout << endl;}return 0;
}
void search_num(int a, int &x, int &y)
{for(x = 0; x < N; x++)for(y = 0; y < blocks[x].size(); y++)if(blocks[x][y] == a)return;return;
}
void homing(const int &x, const int &y)
{int n_tmp = y;while(++n_tmp < blocks[x].size())blocks[blocks[x][n_tmp]].push_back(n_tmp);blocks[x].resize(y + 1);return;
}
void move(const int &x, const int &y, const int &z)//第x堆,第y高的木块和上方的木块放在第z堆上方
{int n_tmp = y - 1;while(++n_tmp < blocks[x].size())blocks[z].push_back(blocks[x][n_tmp]);blocks[x].resize(y);return;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/492517.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C++进阶】STL容器--stack和queue深度剖析优先队列适配器原理

目录 前言 1. 容器的使用 1.1 stack 1.2 queue 2. 什么是适配器 3. stack&&queue底层实现 4. deque的简单介绍 4.1 deque的缺陷 5. priority_queue 思考 6. priority_queue的实现 前言 栈和队列在C语言中大家都有所了解&#xff0c;C语言的栈和队列都是我们手动去…

如何在本地部署密码管理软件bitwarden并结合cpolar实现远程同步

文章目录 1. 拉取Bitwarden镜像2. 运行Bitwarden镜像3. 本地访问4. 群晖安装Cpolar5. 配置公网地址6. 公网访问Bitwarden7. 固定公网地址8. 浏览器密码托管设置 Bitwarden是一个密码管理器应用程序&#xff0c;适用于在多个设备和浏览器之间同步密码。自建密码管理软件bitwarde…

WebStorm下将vue的代码缩进由2个空格改为4个空格

已经找过解决方案但设置后无效的&#xff0c;可直接看文章的最后一句。 最近刚接触vue&#xff0c;发现按tab缩进代码时缩进一直是2格而不是4格&#xff0c;检查了一下WebStorm的配置&#xff1a; File > Settings > Editor > Code Style > JavaScript的设置&…

【开源项目】数字孪生农业~经典开源项目数字孪生智慧农业大棚

飞渡科技数字孪生农业管理平台&#xff0c;是基于数字孪生、物联网IOT、远程感知等技术支撑的农业生产管理模式&#xff0c;构建的多时相、高精度农业信息获取系统与智能服务平台&#xff0c;支持农业资源环境监测与信息服务能力提升。 平台首页提供直观的农田概览&#xff0c…

[ai笔记12] chatGPT技术体系梳理+本质探寻

欢迎来到文思源想的ai空间&#xff0c;这是技术老兵重学ai以及成长思考的第12篇分享&#xff01; 这周时间看了两本书&#xff0c;一本是大神斯蒂芬沃尔弗拉姆学的《这就是ChatGPT》,另外一本则是腾讯云生态解决方案高级架构师宋立恒所写的《AI制胜机器学习极简入门》&#xf…

python学习26

前言&#xff1a;相信看到这篇文章的小伙伴都或多或少有一些编程基础&#xff0c;懂得一些linux的基本命令了吧&#xff0c;本篇文章将带领大家服务器如何部署一个使用django框架开发的一个网站进行云服务器端的部署。 文章使用到的的工具 Python&#xff1a;一种编程语言&…

装配制造业的MES系统种的物料齐套技术

装配是制造企业涉及产品生产加工最为普遍的一种模式&#xff0c;包括汽车、电子、电器、电气等行业。经研究表明&#xff0c;装配在整个产品制造总成本中所占比例超过了50%&#xff0c;所占用的总生产时间比例在40%-60%&#xff0c;直接影响着产品质量和成本。装配制造非常强调…

大数据开发项目--音乐排行榜

环境&#xff1a;windows10&#xff0c;centos7.9&#xff0c;hadoop3.2、hbase2.5.3和zookeeper3.8完全分布式&#xff1b; 环境搭建具体操作请参考以下文章&#xff1a; CentOS7 Hadoop3.X完全分布式环境搭建 Hadoop3.x完全分布式环境搭建Zookeeper和Hbase 1. 集成MapReduce…

Prometheus(一):Prometheus简介及安装

目录 1 Prometheus 介绍1.1 Prometheus简介1.2 Prometheus的特点1.3 Prometheus架构 2 Prometheus安装 1 Prometheus 介绍 1.1 Prometheus简介 Prometheus 是一款基于时序数据库的开源监控告警系统&#xff0c;非常适合Kubernetes集群的监控。Prometheus的基本原理是通过HTTP…

哪些网页原型设计工具易于使用?

本文介绍了七种专业易用的原型工具&#xff0c;帮助您快速制作可验证的方案原型&#xff0c;减少产品、运营和其他同事的沟通时间&#xff0c;以及设计师绘制效果图的沟通时间。我相信你可以在阅读后找到最合适的网页原型设计工具。网页界面原型设计软件有很多选择。以下是一些…

解析ChatGPT Plus相比chatgpt3.5有哪些优势

「ChatGPT Plus」提供更出色的对话体验和更广泛的应用能力&#xff0c;学生可以用来写作、职场人也可以用来写计划书、策划书等等&#xff0c;并且问它一些问题比搜索引擎好用多了简直。但普通人使用起来有一点门槛&#xff0c;并且升级4.0也难住了许多爱好者。 ChatGPT主要功能…

“图片批量管理,美化无忧:一键操作,轻松打造精美图片!“

在数字时代&#xff0c;图片已成为我们生活和工作的重要元素。无论是社交媒体上的个人分享&#xff0c;还是商业宣传中的海报设计&#xff0c;精美图片都扮演着举足轻重的角色。然而&#xff0c;面对海量的图片资源&#xff0c;如何进行批量管理和美化却成为了一个挑战。现在&a…