Uva-101-The Blocks Problem
来源:互联网 发布:linux 启动ftp服务 编辑:程序博客网 时间:2024/05/18 00:09
这个题属于模拟题吧, 它的数据比POJ更为严格,我用POJ AC了的代码交却得到WA,无奈重写。
最后发现问题在于如果当前所需要移动的积木与移动到的积木在同一个位置,则不需要进行任何操作。
代码:
#include<cstdio>#include<iostream>#include<vector>using namespace std;const int maxn=26;vector<int> s[maxn];int n,pos[maxn];void Move(int m,int k){ int p=pos[m]; for(int i=s[m].size()-1;s[m][i]!=k;i--) {s[s[m][i]].push_back(s[m][i]);s[m].pop_back();pos[s[m][i]]=s[m][i]; }}int main(){ while(scanf("%d",&n)!=EOF) {for(int i=0;i<n;i++){ s[i].clear(); s[i].push_back(i); pos[i]=i;}char op[10],opb[10];int a,b;while(1){ scanf("%s",op); if(op[0]=='q')break; scanf("%d%s%d",&a,opb,&b); if(pos[a]==pos[b])continue; if(op[0]=='m') {if(opb[1]=='n'){ Move(pos[a],a); Move(pos[b],b); s[pos[a]].pop_back(); s[pos[b]].push_back(a); pos[a]=pos[b];}else{ Move(pos[a],a); s[pos[a]].pop_back(); s[pos[b]].push_back(a); pos[a]=pos[b];} } else {if(opb[1]=='n'){ Move(pos[b],b); int len=s[pos[a]].size(),p=0; for(int i=0;i<len;i++)if(s[pos[a]][i]==a){ p=i; break;} int last=pos[a]; for(int i=p;i<len;i++) {s[pos[b]].push_back(s[last][i]);pos[s[last][i]]=pos[b]; } for(int i=p;i<len;i++)s[last].pop_back();}else{ int len=s[pos[a]].size(),p=0; for(int i=0;i<len;i++)if(s[pos[a]][i]==a){ p=i; break;} int last=pos[a]; for(int i=p;i<len;i++) {s[pos[b]].push_back(s[last][i]);pos[s[last][i]]=pos[b]; } for(int i=p;i<len;i++)s[last].pop_back();} }}for(int i=0;i<n;i++){ printf("%d:",i); for(int j=0;j<s[i].size();j++) printf(" %d",s[i][j]); printf("\n");} } return 0;}
- uva 101 the blocks problem
- uva 101 the blocks problem
- UVa 101 The Blocks Problem
- uva 101 - The Blocks Problem
- uva 101 - The Blocks Problem
- UVa 101 - The Blocks Problem
- uva 101 - The Blocks Problem
- UVa 101 - The Blocks Problem
- Uva-101-The Blocks Problem
- Uva 101 - The Blocks Problem
- uva 101 The Blocks Problem
- UVa 101 - The Blocks Problem
- uva 101 - The Blocks Problem
- UVA 101 The Blocks Problem
- uva 101 - The Blocks Problem
- UVa 101 The Blocks Problem
- UVa 101 - The Blocks Problem
- uva 101 The Blocks Problem
- Java中获取键盘输入值的三种方法
- Nmap高级用法与典型场景
- VMWare Workstation 6.0调试Linux Kernel
- 孙鑫MFC学习心得:Lesson10:图形的绘制
- iOS sql用法
- Uva-101-The Blocks Problem
- 紧邻算法分类器之模拟图(二)
- Qt4连接mysql成功
- Asp.Net MVC 在后台获取PartialView、View文件生成的字符串
- 使用Javascript和PHP对服务端XML文档进行操作
- linux /dev 常见特殊设备介绍与应用[loop,null,zero,full,random]
- DHH推荐的五本书(未完待续)
- GetInputAwayTime
- [J2EE][SERVLET]OUT.PRINT和OUT.WRITE的区别