uva101 The Blocks Problem

简介: uva101 The Blocks Problem
#include <stdio.h>#include <stdlib.h>#include <string.h>#define LOCAL#define MAXN 30typedefstructnode{
intdata;
structnode*pre, *next;
}*Node;
Nodelink[MAXN] ;
intn;
voidinit();
Nodesearch(intdata, int*pos);
voidfreespace();
intmain()
{
charstr1[5], str2[5];
intsrc, dst;
Nodea, b, p, q;
intflag;
inti;
intpos1, pos2;
#ifdef LOCALfreopen("c://uva_in.txt", "r", stdin);
#endifscanf("%d", &n);
init();
while (scanf("%s", str1) && (strcmp(str1, "quit") !=0))
    {
scanf("%d%s%d", &src, str2, &dst);
a=search(src, &pos1);
b=search(dst, &pos2);
if (strcmp(str1, "move") ==0&&strcmp(str2, "onto") ==0)
flag=1;
elseif (strcmp(str1, "move") ==0&&strcmp(str2, "over") ==0)
flag=2;
elseif (strcmp(str1, "pile") ==0&&strcmp(str2, "onto") ==0)
flag=3;
elseif (strcmp(str1, "pile") ==0&&strcmp(str2, "over") ==0)
flag=4;
if (flag==1&&pos1!=pos2)
        {
p=a->next;
a->next=NULL;
while (p)
            {
q=p->next;
p->next=NULL;
p->pre=link[p->data ];
link[p->data ]->next=p;
p=q;
            }
p=b->next;
b->next=NULL;
while (p)
            {
q=p->next;
p->next=NULL;
p->pre=link[p->data];
link[p->data]->next=p;
p=q;
            }
a->pre->next=NULL;
a->pre=b;
b->next=a;
        } elseif (flag==2&&pos1!=pos2)
        {
p=a->next;
a->next=NULL;
while (p)
            {
q=p->next;
p->next=NULL;
p->pre=link[p->data];
link[p->data]->next=p;
p=q;
            }
while (b->next)
b=b->next;
a->pre->next=NULL;
a->pre=b;
b->next=a;
        } elseif (flag==3&&pos1!=pos2)
        {
p=b->next;
b->next=NULL;
while (p)
            {
q=p->next;
p->next=NULL;
p->pre=link[p->data];
link[p->data]->next=p;
p=q;
            }
a->pre->next=NULL;
a->pre=b;
b->next=a;
        } elseif (flag==4&&pos1!=pos2)
        {
while (b->next)
b=b->next;
a->pre->next=NULL;
a->pre=b;
b->next=a;
        }
    }
for (i=0; i<n; i++)
    {
p=link[i]->next;
printf("%d:", i);
while (p)
        {
printf(" %d", p->data);
p=p->next;
        }
printf("/n");
    }
return0;
}
voidinit()
{
inti;
Nodep;
for (i=0; i<n; i++)
    {
p= (Node)malloc(sizeof(structnode));
p->data=i;
p->next=NULL;
link[i] = (Node)malloc(sizeof(structnode));
link[i]->next=p;
p->pre=link[i];
    }
}
Nodesearch(intdata, int*pos)
{
inti;
Nodep;
for (i=0; i<n; i++)
    {
p=link[i]->next;
while(p)
        {
if (p->data==data)
            {
*pos=i;
returnp;
            }
p=p->next;
        }
    }
returnNULL;
}
voidfreespace()
{
inti;
Nodep, q;
for (i=0; i<n; i++)
    {
p=link[i]->next;
while(p)
        {
q=p->next;
free(p);
        }
free(link[i]);
    }
}
目录
相关文章
|
Shell Linux
shell 脚本常用于自动化执行文件备份与压缩的任务
shell 脚本常用于自动化执行文件备份与压缩的任务
303 1
|
监控 前端开发 关系型数据库
搭建直播网站技术层面准备全流程
搭建直播网站涉及技术选型、开发与部署。技术选型包括服务器端(Java/Go、MySQL/PostgreSQL、Redis、阿里云OSS等)、前端(React/Vue.js、React Native/Flutter)、流媒体技术(RTMP、HLS、WebRTC、H.264/AAC)和CDN加速。系统架构设计涵盖前端、后端、流媒体服务器及数据库,使用负载均衡器分发流量,包含用户认证、推拉流管理、实时通信等功能模块。开发流程包括环境搭建、API实现、WebSocket通信、页面开发及流媒体配置。部署阶段涉及服务器搭建、Docker容器化、CDN配置、日志监控及CI/CD自动化部署。
3606 13
|
计算机视觉 开发者 Python
OpenCV合并图像中加权和与覆盖的讲解与实战(附Python源码)
OpenCV合并图像中加权和与覆盖的讲解与实战(附Python源码)
708 0
|
分布式计算 大数据 Java
大数据-86 Spark 集群 WordCount 用 Scala & Java 调用Spark 编译并打包上传运行 梦开始的地方
大数据-86 Spark 集群 WordCount 用 Scala & Java 调用Spark 编译并打包上传运行 梦开始的地方
322 1
大数据-86 Spark 集群 WordCount 用 Scala & Java 调用Spark 编译并打包上传运行 梦开始的地方
|
移动开发 JavaScript 数据可视化
|
算法
LabVIEW开发牵引控制动态仿真器
LabVIEW开发牵引控制动态仿真器
126 2
LabVIEW开发牵引控制动态仿真器
|
运维 数据可视化 Python
PYTHON中用PROPHET模型对天气时间序列进行预测与异常检测
PYTHON中用PROPHET模型对天气时间序列进行预测与异常检测
|
机器学习/深度学习 数据采集 算法
构建高效机器学习模型的五大关键技术
【5月更文挑战第20天】 在数据驱动的时代,构建一个高效且准确的机器学习模型是获取洞见和预测未来趋势的核心。本文深入探讨了五大关键技术,这些技术对于提升模型性能至关重要。我们不仅讨论了数据处理的最佳实践,还涵盖了特征工程的重要性、模型选择的策略、超参数调优的细节以及交叉验证的必要性。通过综合应用这些技术,读者将能够建立起更加健壮、可靠的机器学习系统。
|
监控 Java API
使用Java检测当前CPU负载状态的技术博客
使用Java检测当前CPU负载状态的技术博客
582 0

热门文章

最新文章

下一篇
开通oss服务