栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

poj 1208 The Blocks Problem

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

poj 1208 The Blocks Problem

#include<stdio.h>#include<string.h>#include<iostream>#define MAX 30using namespace std;int n,pos[MAX],stack[MAX][MAX],len[MAX];void DealMove(int index){    int w=pos[index];    for(int i=len[w]-1;stack[w][i]!=index;i--)    {int ita=stack[w][i];pos[ita]=ita;stack[ita][len[ita]++]=ita;len[w]--;    }}void Show(){    for(int i=0;i<n;i++)    {printf("%d:",i);for(int j=0;j<len[i];j++)    printf(" %d",stack[i][j]);printf("n");    }}int main(){    while(scanf("%d",&n)!=EOF)    {for(int i=0;i<n;i++){    len[i]=1;    pos[i]=i;    stack[i][0]=i;}char op[10];while(scanf("%s",op)&&op[0]!='q'){    int a,b;    char s[10];    scanf("%d%s%d",&a,&s,&b);    if(a==b&&pos[a]==pos[b])continue;    if(op[0]=='m')    {if(s[1]=='n'){    DealMove(a);    DealMove(b);    stack[pos[b]][len[pos[b]]++]=a;    len[pos[a]]--;    pos[a]=pos[b];}else{    DealMove(a);    stack[pos[b]][len[pos[b]]++]=a;    len[pos[a]]--;    pos[a]=pos[b];}    }    else    {if(s[1]=='n'){    DealMove(b);    int t=-1;    for(int i=0;i<len[pos[a]];i++)if(stack[pos[a]][i]==a){    t=i;    break;}    int lena=len[pos[a]],last=pos[a];    for(int i=t;i<lena;i++)    {stack[pos[b]][len[pos[b]]++]=stack[last][i];pos[stack[last][i]]=pos[b];len[last]--;    }}else{    int t=-1,lena;    for(int i=0;i<len[pos[a]];i++)if(stack[pos[a]][i]==a){    t=i;    break;}    lena=len[pos[a]];    int last=pos[a];    for(int i=t;i<lena;i++)    {stack[pos[b]][len[pos[b]]++]=stack[last][i];pos[stack[last][i]]=pos[b];len[last]--;    }}    }}Show();    }    return 0;}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/379079.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号