【例题5-2 UVA - 101】The Blocks Problem
2024-09-20 09:38:19
【链接】 我是链接,点我呀:)
【题意】
在这里输入题意
【题解】
用vector模拟就好。
resize的时候,只是把多余的清理掉。
原先的不会变的。
【错的次数】
在这里输入错的次数
【反思】
在这里输入反思
【代码】
#include <bits/stdc++.h>
using namespace std;
const int N = 30;
string s1, s2;
int n, a, b;
vector <int> v[N];
void get_sta(int a, int &p, int &h)
{
for (int i = 0; i < n; i++)
{
int len = v[i].size();
for (int j = 0;j < len;j++)
if (v[i][j] == a)
{
p = i, h = j;
return;
}
}
}
void clear(int p, int h)
{
int lenv = v[p].size();
for (int j = h + 1; j < lenv; j++)
v[v[p][j]].push_back(v[p][j]);
v[p].resize(h + 1);
}
void add(int p1, int h1, int p2)
{
int lenv = v[p1].size();
for (int j = h1; j < lenv; j++)
v[p2].push_back(v[p1][j]);
v[p1].resize(h1);
}
int main()
{
//freopen("F:\\rush.txt", "r", stdin);
scanf("%d", &n);
for (int i = 0; i < n; i++) v[i].push_back(i);
while (cin >> s1)
{
if (s1 == "quit") break;
cin >> a >> s2 >> b;
int p1, h1, p2, h2;
get_sta(a, p1, h1);
get_sta(b, p2, h2);
if (p1 == p2) continue;
if (s1 == "move") clear(p1, h1);
if (s2 == "onto") clear(p2, h2);
add(p1,h1,p2);
}
for (int i = 0; i < n; i++)
{
printf("%d:",i);
int len = v[i].size();
for (int j = 0; j < len; j++) printf(" %d", v[i][j]);
puts("");
}
return 0;
}
最新文章
- javaSE基础03
- CSS3常用选择器(三)
- java实现调用ORACLE中的游标和包
- 配置vim环境
- 开源PLM软件Aras详解三 服务端简易开发
- 简单几何(凸包+多边形面积) POJ 3348 Cows
- dom 侧栏分享
- 从ASM迁移到ARM(1):平台支持的迁移服务
- poj2777--Count Color(线段树,二进制转化)
- div,margin,padding
- 逆向学习-Upack的PE文见头分析
- python_正则表达式随笔
- magento 由于Httpd进程增多,导致CPU占用100%问题
- travis-ci 中运行 puppeteer
- if-else案例–开关灯
- bootstrap 强调相关的类
- BZOJ1207 [HNOI2004]打鼹鼠 动态规划
- JVM Debugger Memory View for IntelliJ IDEA
- CentOS7安装mysql后无法启动服务,提示Unit not found
- 数组比较大小的几种方法及math是方法
热门文章
- Oracle 启动失败报错“TNS-12555: TNS:permission denied”解决办法
- C/C++(函数)
- java(数组及常用简单算法 )
- ES6--基础语法(一)
- LuoguP2774 方格取数问题(最小割)
- Linux ";零拷贝"; sendfile函数中文说明及实际操作分析
- dump var_dump print print_r的区别
- Android HttpLoggingInterceptor的用法简介
- AJAX - 封装的传参改为传入对象 XML JSON 数据格式
- 异步调用WCF的方法需要小心的地方