POJ 1208 The Blocks Problem --vector
2024-09-25 03:32:30
http://poj.org/problem?id=1208
晚点仔细看
https://blog.csdn.net/yxz8102/article/details/53098575
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<iostream>
#include<stdlib.h>
#include<algorithm>
#include<queue>
#include<vector>
#include<string>
#define mem(a) memset(a,0,sizeof(a))
using namespace std;
const long long N=1e9+;
#define LL long long
vector<int> pile[];
int n; //查找木块a所在的pile和height
void find_block(int a,int &p,int &h) //引用,相当于直接用实参
{
for(p=;p<n;p++)
{
for(h=;h<pile[p].size();h++)
{
if(pile[p][h]==a) return;
//vector就像一个二维数组,只是第一维大小固定(30),二维大小不固定。
}
}
}
//把p堆高度为h的木块上方所有的木块移回原位置
void clear_above(int p,int h)
{
for(int i=h+;i<pile[p].size();i++)
{
int t=pile[p][i];
pile[t].push_back(t); ////把标号为t的木块放回原位,即t堆
}
pile[p].resize(h+); //重新定义p堆的长度
}
//把p堆高度为h及其上方的木块整体移到p2的得尾部
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=;i<n;i++)
{
printf("%d:",i);
for(int j=;j<pile[i].size();j++)
{
printf(" %d",pile[i][j]);
}
printf("\n");
}
}
int main()
{
int a,b;
scanf("%d",&n);
string s1,s2;
for(int i=;i<n;i++)
{
pile[i].push_back(i);
}
while(cin>>s1)
{
if (s1=="quit") break;
cin>>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 ;
}
最新文章
- EntityFramework 7 Left Join Where is error(Test record)
- Tools
- C++ 数字转换为string类型
- win7 hosts文件更改后无效,不生效问题
- hive 使用where条件报错 java.lang.NoSuchMethodError: org.apache.hadoop.hive.ql.ppd.ExprWalkerInfo.getConvertedNode
- HashMap和HashSet的区别
- java 多线程同步
- js 截取某个字符前面或者后面的字符串
- [译] ASP.NET 生命周期 – ASP.NET 请求生命周期(三)
- iOS利用代理实现界面跳转
- Windows安装Subversion
- Varnish CentOS 6.4 x64
- ASP.NET中登录时记住用户名和密码(附源码下载)--ASP.NET
- 网页底部广告悬浮弹窗(css)
- REST(Representational state transfer)的四个级别以及HATEOAS介绍
- 聚类--K均值算法:自主实现与sklearn.cluster.KMeans调用
- OSPF单区域配置
- 【javascript】详解javaScript的深拷贝
- python:a += b 和 a = a + b
- 教你轻松计算AOE网关键路径
热门文章
- Linux NTP时间同步服务
- 洛谷P3205 [HNOI2011]合唱队 DP
- 【洛谷P3389 【模板】高斯消元法】
- laravel 图片验证码
- mongodb中比较级查询条件:($lt $lte $gt $gte)(大于、小于)、查找条件
- JS学习笔记Day15
- Quartz.net 3.x使用总结(一)——入门介绍
- PLSQL Developer 远程连接Oracle数据库
- [Tex学习笔记]小于等于一个常数乘以...
- luogu 4345 Lucas的变形应用