Uva 101 the block problem 木块问题

C++ 不定长数组vector 例5-2木块问题(The Blocks Problem,UVa 101) vector就是一个不定长数组。不仅如此,它把一些常用的操作“封装”在了vector类型内部。 若a是一个vector,可以用以下语句直接对vector进行操作 a.size() a.resize() a.push_back() a.pop_back() 读取大小 改变大小 向尾部添加元素 删除最后一个元素 vector是一个模板,所以需要用 阅读详情

Uva 101 the block problem 木块问题

题目大意:

输入n,得到编号为0~n-1的木块,分别摆放在顺序排列编号为0~n-1的位置。现对这些木块进行操作,操作分为四种。

1、move a onto b:把木块a、b上的木块放回各自的原位,再把a放到b上;

2、move a over b:把a上的木块放回各自的原位,再把a发到含b的堆上;

3、pile a onto b:把b上的木块放回各自的原位,再把a连同a上的木块移到b上;

4、pile a over b:把a连同a上木块移到含b的堆上。

当输入quit时,结束操作并输出0~n-1的位置上的木块情况

Sample Input 
10
move 9 onto 1
move 8 over 1
move 7 over 1
move 6 over 1
pile 8 over 6
pile 8 over 5
move 2 over 1
move 4 over 9
quit
Sample Output 
 0: 0
 1: 1 9 2 4
 2:
 3: 3
 4:
 5: 5 8 7 6
 6:
 7:
 8:
 9:

思路:提取指令之间的共同点,简化代码,用不定长数组vector储存(参考紫书)
 

#include<cstdio>
#include<string>
#include<vector>
#include<iostream> 
using namespace std;
const int maxn=30;
int n;
vector<int> pile[maxn];
void find_block(int a,int &p,int &h){
	for(p=0;p<n;p++)
	for(h=0;h<pile[p].size();h++)
	if(pile[p][h]==a)return;
}
void clear_above(int p,int h){
	for(int i=h+1;i<pile[p].size();i++){
	int b=pile[p][i];
	pile[b].push_back(b);
	}
	pile[p].resize(h+1);
}
void pile_onto(int p,int h,int p2){
	for(int i=h;i<pile[p].size();i++)
	pile[p2].push_back(pile[p][i]);
	pile[p].resize(h);
}
void print(){
	for(int i=0;i<n;i++){
		cout<<i<<":";
		for(int j=0;j<pile[i].size();j++)
		cout<<" "<<pile[i][j];
		cout<<endl;
	}
}
int main(){
	int a,b;
	cin>>n;
	string s1,s2;
	for(int i=0;i<n;i++)pile[i].push_back(i);
	while(cin>>s1>>a>>s2>>b){
		int pa,pb,ha,hb;
		find_block(a,pa,ha);
		find_block(b,pb,hb);
		if(pa==pb)continue;
		if(s2=="onto")clear_above(pb,hb);
		if(s1=="move")clear_above(pa,ha);
		pile_onto(pa,ha,pb);
	}
	print();
	return 0;
}

 

Uva 101 the block problem 木块问题(算法竞赛经典入门)STL vector Uva 101 the block problem 木块问题 题目大意: 输入n,得到编号为0~n-1的木块,分别摆放在顺序排列编号为0~n-1的位置。现对这些木块进行操作,操作分为四种。 1、move a onto b:把木块a、b上的木块放回各自的原位,再把a放到b上; 2、move a over b:把a上的木块放回各自的原位,再把a发到含b的堆上; 3、p 阅读详情

相关推荐

例题5-2 木块问题 The Blocks Problem Uva 101

#include&lt;stdio.h&gt; #include&lt;vector&gt; #include&lt;string.h&gt; #define N 40 using namespace std; vector&lt;int&gt;pile[N]; int n; void find_block(int a, int &amp;p, int &amp;h) { for(p = ...

代码虐我千万遍 我待代码如初恋 的博客 351

UVA-101TheBlocksProblem

题目描述 有效命令: move a onto b:把a和b上所堆的所有木块复原,再把a放在b上面 move a over b:把a上面所堆的所有木块复原,再把a放在b上面 pile a onto b:把b上所堆的所有木块复原,在把a以及a上所堆的木块堆到b上 pile a over b:把a以及a上的木块堆到b上 quit:退出程序 共同点: 当命令包含onto的时候,复原b上的木块 当命令包含move的时候,复原a上的木块 其余命令都是将a(及a上的木块,复原a后a上不存在木块)放置于b上 .

yoOvQ的博客 197

AFC自动售检票系统与人工智能AI结合的关键应用方案

针对售检票、大客流管理、设备运维及服务优化提供了可落地的技术支持和实现细节,可作为地铁智慧交通项目的实践参考

leijinquan01的博客 1513

UVa 101 - The Blocks Problem

题目:给你n个方块,有四种操作:             1.move a onto b,把a和b上面的方块都放回原来位置,然后把a放到b上面;             2.move a over b,把a上面的放回原处,然后把a放在b所在的方块堆的上面;             3.pile a onto b,把b上面的放回原来位置,然后把a所在的堆整体放到b上面;

小白菜又菜 1万+

计算机视觉与深度学习实战:以Python为工具,基于帧间差法进行视频目标检测

计算机视觉是一门研究如何使机器从数字图像或视频中提取、分析和理解有用信息的学科。它涉及图像处理、计算机图形学、人工智能等多个领域的知识。通过计算机视觉技术,我们可以实现图像的识别、分类、目标检测等功能。本文介绍了计算机视觉与深度学习的基本概念和原理,并以Python为工具,基于帧间差分法实现了视频目标检测。帧间差分法具有算法实现简单、程序设计复杂度低、对光线等场景变化不太敏感等优点,因此在实际应用中得到了广泛的应用。然而,帧间差分法也存在一些局限性,如对于缓慢移动或静止的物体检测效果不佳。

一个好知识的传播者 1256

告别概念晕眩:用TC3xx SMU和TLF35584的配置实例,搞懂ASIL D功能安全落地

本文通过英飞凌TC3xx系列MCU的SMU模块与TLF35584电源管理芯片的协同配置实例,详细解析了如何实现符合ASIL D功能安全标准的刹车辅助ECU。文章涵盖SMU报警源配置、响应动作类型、TLF35584的安全状态管理,以及构建完整安全闭环的实践方法,帮助工程师将抽象的安全概念落地为具体设计方案。

weixin_30647065的博客 438

uva 101 木块问题 The Blocks Problem

题目描述:   Description   Background  Many areas of Computer Science use simple, abstract domains for both analytical and empirical studies. For example, an early AI study of planning and robotics ...

逍遥 2226

鱼眼双目测距实战:从OpenCV标定到SGBM匹配的完整流程解析

本文详细解析了鱼眼双目测距的完整流程,从OpenCV标定到SGBM匹配,涵盖标定、校正、匹配和测距四个关键阶段。通过实战经验分享,帮助开发者解决鱼眼镜头强畸变带来的测距挑战,提升测距精度至5%以内。特别适合机器人导航、自动驾驶和VR领域的开发者参考。

weixin_27298377的博客 124

木块问题(The Blocks Problem, UVa101)

从左到右有n个木块(编号为0~n-1),要求模拟以下4种操作(下面的a和b都是木块编号)。 move a onto b:把a和b上方的木块全部归位,然后把a摞在b上面 move a over b:把a上方的木块全部归位,然后把a放在b所在木块堆的顶部 pile a onto b:把b上方的木块全部归位,然后把a及其上方的木块整体摞在b上面 pile a over b:把a及其上方的木块整体...

u012439764的博客 901

树莓派5搭建ROS1开发环境:从系统安装到环境变量配置

本文详细指导如何在树莓派5上搭建ROS1开发环境。针对树莓派OS非标准安装路径导致的常见CMake报错问题,提供了从系统烧录、一键安装ROS到关键环境变量配置的完整解决方案,确保工作空间能成功编译,助力机器人项目开发。

weixin_29159127的博客 385

DB文件在编程中的作用及示例代码

通过使用DB文件,我们可以实现数据的持久化存储,并能够高效地进行数据的增删改查操作。在本文中,我们以SQLite数据库为例,演示了如何使用Python语言创建和操作DB文件的示例代码。在实际的编程中,我们可以根据具体的需求和使用的数据库系统来进行更复杂的操作和优化。通过使用DB文件,我们可以实现数据的持久化存储,确保数据在程序关闭后也能被保留,并且能够高效地进行数据检索和更新。在本文中,我们将探讨DB文件的作用,并提供一些示例代码展示如何在编程中使用DB文件。上述代码中,我们使用SQLite提供的。

CodeSpark的博客 1822

木块问题 (UVA 101,The Block Problem)(C++实现)

UVA 101 木块问题 题目描述 Many areas of Computer Science use simple, abstract domains for both analytical and empirical studies. For example, an early AI study of planning and robotics (STRIPS) used a block world in which a robot arm performed tasks involving the

ymj68520的博客 648

Unreal5从入门到精通之Landscape地形系统

虚幻引擎 5 (UE5) 能够利用其强大的地形编辑工具套件创建大规模的地形世界。使用地形工具可以创建身临其境的户外地形,这些地形经过优化,可在多种不同设备上保持可播放的帧速率。

TxNet 4143

木块问题 the blocks problem uva 101

问题描述 思路 找到四种操作的共同点,减少代码量 归位的意思是将0号木块放在0号堆上,1号木块放于1号堆上… 代码 注:代码是紫皮书P110 #include<iostream> #include<string> #include<cstdio> #include<vector> using namespace std; const int maxn=100; int n; vector<int> pile[maxn];//pile[i]表示第i

qq_45670253的博客 499

2026实测可用!4个专业AI Agent Skills垂直搜索平台对比

📊本文以表格形式整理4个实测可用的专业AI Agent Skills垂直搜索平台,涵盖资源规模、适配生态等关键维度🤖,适合开发者按需选择技能获取渠道,解决平台筛选与访问难题✨

XiaoqiangClub的博客 525

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

UVa 101 - The Blocks Problem 木块问题

如果有某位童鞋不幸看到了这篇文章,一定记着,要自己写一遍。(这很重要) 初识这道题的时候,逻辑上就不太懂题意,反反复复理解了半天也没什么思路,索性直接学习别人的代码,理解之后,自己写了一遍。前前后后花了两个半小时... 个人感觉,学习大牛的代码,然后自己写一遍会有很大的收获。(尝试过才知道)不知从哪看来的一句话说,每个大牛在菜鸟时期都曾经有一段默写别人代码的经历。 等他们成了大牛就会觉得很蠢...

weixin_30246221的博客 277

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

UVa OJ The Blocks Problem 木块问题 101

UVa OJ The Blocks Problem 木块问题 101

Raptor_2017的博客 642

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

UVA101 The Blocks Problem

这种模拟题如果不好好读题那么难度可是成倍增加,这是向量的一道练习题,读题目发现其实就只有两个操作,一个是把某个木块上面的木块归位,一个是把某个木块连同它本身移到另一个木块的上面,为了方便这两个进行操作,还需要一个函数来获得输入的两个木块现实的所在的位置,然后按照题目即可,最后一个坑点不要忘记了,如果操作的两个木块在一列,那么这个操作忽略 但是对于第一个归位操作我有一个疑问,要是上面某个元素就在这一列,那么要怎么处理,看了看刘汝佳的代码,他是直接resize,但是这种情况不是还是要放在这一列的上面吗,但是好像

qq_33942309的博客 268

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

木块问题 问题描述 从左到右有n个木块,编号为0~n-1,要求模拟一下4种操作(下面的a和b都是木块编号)。 □ move a onto b:把a和b上方的木块全部归位,然后把a摞在b上面。 □ move a over b:把a上方的木块全部归位,然后把a放在b所在木块堆的顶部。 □ pile a onto b:把b上方的木块全部归位,然后把a及上面的木块整体摞在b上面。 □ pile a over b:把a及上面的木块整体摞在b所在木块堆的顶部。 遇到quit时终止一组数据。a和b在同一堆的指令是非

qq_54233803的博客 413

The Blocks Problem (积木问题) UVa OJ 101

这道题我从下午一直做到晚上9点多,途中请教了一位同学,讨论2个小时之久,再经过自己1个多小时的测试数据,调试,终于找到错误,自己太不小心,在此一定要感谢乐于助人的hcbbt同学,思路很简单就是模拟,我是用vector模拟的。。 #include #include #include #include using namespace std; vector bricks[30]; int a

九问的烦恼 1557

【ICPC-345】uva 101 - The Blocks Problem

点击打开链接 题目意思: 在早期人工智慧的領域中常常會用到機器人,在這個問題中有一支機器手臂接受指令來搬動積木,而你的任務就是輸出最後積木的情形。 (編號從0到n-1)0號積木放在0號位置上,1號積木放在1號位置上 機器手臂有以下幾種合法搬積木的方式(a和b是積木的編號) move a onto b 在將a搬到b上之前,先將a和b上的積木放回原來的位置(例如:1就放回1的最開始位罝) m...

藏经阁 | 玄苦 1207

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

不定长数组:vector vector就是一个不定长数组。不仅如此,它把一些常用操作“封装”在了vector类型内部。 例如,若a是一个vector,可以用a.size( )读取它的大小,a.resize( )改变大小,a.push_back( )向 尾部添加元素,a.pop_back( )删除最后一个元素。 vector是一个模板类,所以需要用vectora或者vectorb这样的...

aichengcan1181的博客 277

【UVA - 101】The Blocks Problem(vector+模拟)

The Blocks Problem Descriptions:(英语就不说了,直接上翻译吧) 初始时从左到右有n个木块,编号为0~n-1,要求实现下列四种操作: move a onto b: 把a和b上方的木块全部放回初始的位置,然后把a放到b上面 move a over b: 把a上方的木块全部放回初始的位置,然后把a放在b所在木块堆的最上方 pile a onto b: 把b上...

weixin_30293135的博客 212

The Blocks Problem 题解

The Blocks Problem 题目传送门 UVA - 101 刷刘大爷紫书的第二天 大致思路 这道题的大致思路应该比较明显,对每根柱子上的木块进行归位和转移两种操作 我的想法是用map存每个木块的在哪跟柱子上,再进行查找,归位和移动的操作 #include <bits/stdc++.h> using namespace std; map<int,int>book; ...

tlyzxc的博客 283
上一篇: MVC框架
下一篇: 正则表达式
荷戟独彷徨
博客等级 码龄8年 11粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

荷戟独彷徨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值