UVA 127 链表和栈的使用
刘汝佳的题目感觉都是比较难以处理的,就像这道题目,一看数据简直觉得头大。。。加上这个英文我也看的想死
最后看别人博客的题意讲解才知道原来是要移牌。
然后如果熟练的使用stack和手写链表的话,这个题目是不成问题的
#include <iostream>
#include <cstdio>
#include <cstring>
#include <stack>
#define N 100
using namespace std;
struct node{
char ch[];
};
stack<node> arr[N];
int next[N],pre[N];
int t,cnt;
void deletegap()
{
for (int i=;i!=t;i=next[i])
{
if (arr[i].empty())
{
next[pre[i]]=next[i];
pre[next[i]]=pre[i];
return;
}
}
}
bool movement()
{
int i;
for (i=next[];i<t;i=next[i])
{
int f1=pre[pre[pre[i]]];
if (f1>= && f1<t)
{ if (arr[i].top().ch[]==arr[f1].top().ch[] || arr[i].top().ch[]==arr[f1].top().ch[])
{
arr[f1].push(arr[i].top());
arr[i].pop();
return true;
}
}
int f0=pre[i];
if (arr[i].top().ch[]==arr[f0].top().ch[]||arr[i].top().ch[]==arr[f0].top().ch[])
{
arr[f0].push(arr[i].top());
arr[i].pop();
return true;
}
}
return false; }
void solve()
{
while (movement())
{
deletegap();
}
}
int main()
{
t=;
node temp;
while (scanf("%s",temp.ch))
{
if (temp.ch[]=='#')
break;
while (!arr[t].empty())
arr[t].pop();
arr[t].push(temp);
pre[t]=t-;
next[t]=t+;
t++;
if (t==)
{
solve();
int ans=;
for (int i=;i!=t;i=next[i])
ans++;
if (ans==) printf("1 pile remaining: ");
else printf("%d piles remaining: ",ans);
for (int j=;j!=t;j=next[j])
{
if (j) putchar(' ');
printf("%d",arr[j].size());
}
putchar('\n');
t=;
}
}
return ;
}
UVA 127 链表和栈的使用的更多相关文章
- Java数据结构——用链表实现栈
//================================================= // File Name : LinkStack_demo //---------------- ...
- 线性表 及Java实现 顺序表、链表、栈、队列
数据结构与算法是程序设计的两大基础,大型的IT企业面试时也会出数据结构和算法的题目, 它可以说明你是否有良好的逻辑思维,如果你具备良好的逻辑思维,即使技术存在某些缺陷,面试公司也会认为你很有培养价值, ...
- Java用链表实现栈和队列
1.用链表实现栈 package stack; /** * * @author denghb * */ class Link { public long dData; public Link next ...
- Java之链表实现栈结构
package com.wzlove.stack; import java.util.Iterator; import java.util.NoSuchElementException; /** * ...
- 图解堆算法、链表、栈与队列(Mark)
原文地址: 图解堆算法.链表.栈与队列(多图预警) 堆(heap),是一类特殊的数据结构的统称.它通常被看作一棵树的数组对象.在队列中,调度程序反复提取队列中的第一个作业并运行,因为实际情况中某些时间 ...
- java实现 数据结构:链表、 栈、 队列、优先级队列、哈希表
java实现 数据结构:链表. 栈. 队列.优先级队列.哈希表 数据结构javavector工作importlist 最近在准备找工作的事情,就复习了一下java.翻了一下书和网上的教材,发现虽然 ...
- [Python] 数据结构--实现顺序表、链表、栈和队列
说明: 本文主要展示Python实现的几种常用数据结构:顺序表.链表.栈和队列. 附有实现代码. 来源主要参考网络文章. 一.顺序表 1.顺序表的结构 一个顺序表的完整信息包括两部分,一部分是表中元素 ...
- 基于链表的栈(Java)
package com.rao.linkList; /** * @author Srao * @className LinkedStack * @date 2019/12/3 13:59 * @pac ...
- Java 用链表实现栈和队列
栈 是一种基于后进先出(LIFO)策略的集合类型.当邮件在桌上放成一叠时,就能用栈来表示.新邮件会放在最上面,当你要看邮件时,会一封一封从上到下阅读.栈的顶部称为栈顶,所有操作都在栈顶完成. 前面提到 ...
随机推荐
- Java中数组的创建
Java中数组的使用 1.普通数组变量的定义: //数组 //1.数组是Java中很重要的一部分,今天对数组进行了大致的了解,Java中的数组和C中数组还是有一定的区别的 //以下是总结的几种方法 p ...
- 006.Delphi插件之QPlugins,多服务演示
演示效果如下 演示工程,全部就一个文件,代码如下 unit Frm_Main; interface uses Winapi.Windows, Winapi.Messages, System.SysUt ...
- Web application architecture overview
- HttpClient测试
导入maven依赖 <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson&l ...
- pythonfile的知识点
1. file=open("/test/case1.txt","w") #open(路径+文件名,读写模式) #读写模式: r:只读(默认) rb:读二进制文件 ...
- P1082 射击比赛
P1082 射击比赛 转跳点:
- 20170430深圳Meetup
一.类似于淘宝网,可以连续选择多个商品筛选条件,这多个参数如何传递到后台,进行数据交互? 方案一: def index // 给view提供多个参数 @param1 = ... @param2 = . ...
- .Net有哪些大型项目、大型网站的案例?
.Net开发的部分知名网站案例:http://www.godaddy.com 全球最大域名注册商http://www.ips.com 环迅支付,国内最早的在线支付平台http://www.icbc.c ...
- jenkins打包iOS 报错:error: exportArchive: The data couldn’t be read because it isn’t in the correct format.
在执行ios 打包的时候,我们通过执行下面的指令来打包ipa: mkdir arch archive_path=arch/${app_name}.xcarchive workspace_name=HP ...
- Echarts词云图
今天使用Echarts写了个词云图,之前使用pycharts生成的html就是echarts.主要代码如下,另外Echarts需要到https://www.echartsjs.com/下载,开发时使用 ...