POJ 1208 The Blocks Problem
来源:互联网 发布:java web接口开发demo 编辑:程序博客网 时间:2024/05/16 18:58
该题重点是要理解四种指令具体执行的操作,然后模拟操作执行过程。
#include<iostream>#include<cstdio>#include<cstdlib>using namespace std;typedef struct block{int num;struct block *up, *down; //分别指向该block上面和下面的block } block;block *table[25]; //模拟桌子block *point[25]; //point[i]始终指向对应的block,方便找到指定的block int n; //block的数量 void init() //初始化 {block *p;for(int i=0; i<n; i++){p=(block*)malloc(sizeof(block));p->num=i;p->up = p->down = NULL;table[i] = point[i]= p;}}//判断指令是否合法 bool isValid(int a, int b){block *p;if(a==b) return false;//从a往上搜索p=point[a]->up;while(p){if(p->num == b) return false;p=p->up;}//从a往下搜索p=point[a]->down;while(p){if(p->num == b) return false;p=p->down;}return true;}//将b及b以上的block放到初始位置 void recover(block *b){while(b){ b->down->up=NULL; b->down=NULL; table[b->num]=b; b=b->up; }}void output(){block *p;for(int i=0; i<n; ++i){cout<<i<<":";p=table[i];while(p){cout<<" "<<p->num;p=p->up;}cout<<endl;}}int main(){int a,b;string str1, str2;block *p_a, *p_b;cin>>n;init(); cin>>str1; while(str1 != "quit"){cin>>a>>str2>>b;if(isValid(a,b)){p_a = point[a];p_b = point[b];//进行相应的操作 if(str1 == "move"){if(p_a -> up) recover(p_a -> up);}if(str2 == "onto"){if(p_b -> up) recover(p_b -> up);}else{while(p_b->up) p_b = p_b->up; } //将a与下面的block断开 if(p_a->down) {p_a->down->up=NULL;p_a->down=NULL;}else{table[p_a->num]=NULL;}//将a放到blockb上p_b->up=p_a;p_a->down=p_b; }cin>>str1;}output();return 0;}
- poj 1208 The Blocks Problem
- POJ 1208 The Blocks Problem
- POJ-1208-The Blocks Problem
- poj 1208 The Blocks Problem
- POJ 1208 The Blocks Problem
- POJ 1208 The Blocks Problem
- POJ 1208 The Blocks Problem
- POJ 1208 The Blocks Problem [模拟]
- POJ 1208 The Blocks Problem (UVA 101)
- POJ 1208 The Blocks Problem(模拟)
- POJ-模拟-1208 The Blocks Problem
- B -- POJ 1208 The Blocks Problem
- POJ 1208 The Blocks Problem 链表
- 1125 POJ#1208 The Blocks Problem
- POJ 1208 The Blocks Problem 简单栈模拟
- POJ 1208 The Blocks Problem 栈模拟 练STL
- uva-101 && poj 1208 The Blocks Problem (模拟栈)
- poj 1208 The Blocks Problem 模拟+vector的使用
- Linux驱动加载顺序
- 关于setLayoutParams报错
- ubuntu入门常用命令
- avcodec_decode_audio2返回值为-1?
- 形象图
- POJ 1208 The Blocks Problem
- 关于专业的碎碎念
- Oracle数据库补丁下载
- javascript调用applet
- javascript作用域链(Scope Chain)初探
- PHPBB的sitemap制作,生成有利于SEO的网址
- 理解ARC在Objective-C中的应用
- 20120604今天dms全部调通!
- SELECT INTO 和 INSERT INTO SELECT 两种表复制语句