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)策略的集合类型.当邮件在桌上放成一叠时,就能用栈来表示.新邮件会放在最上面,当你要看邮件时,会一封一封从上到下阅读.栈的顶部称为栈顶,所有操作都在栈顶完成. 前面提到 ...
随机推荐
- 023、MySQL取文本长度取字符串长度
#取文本长度,一个文字算1长度 SELECT CHAR_LENGTH('田攀520'); #UTF-8的数据库,值为5 #取文本长度,汉字算多个字符,数字和英文算一个字符 SELECT LENGTH( ...
- ios之开源
a http://code.cocoachina.com b http://code4app.com c http://www.oschina.net/ios/codingList/ d github ...
- Notepad2&Notepad++
写在前面 几个礼拜前电脑自带的记事本抽风,打开文本后台有进程但就是不显示界面,网上搜的教程无非是重装.杀毒.换包;这些操作要不就是太繁琐要不就是没效果,于是乎我物色了两款十分强大且轻量的开源记事本No ...
- Quartus设计FIR滤波器的系数文件格式(适用于FIR II的IP核)
对常用的FIR,我们使用MATLAB的fdatool(或者filterDesigner) 设计滤波器,给定指标,生成系数.为了方便,我们将系数保存到文件,其保存格式比较简介,在此进行说明. 1.FIR ...
- L2d插件
<script src="https://blog-static.cnblogs.com/files/yyhh/L2Dwidget.min.js"></scrip ...
- P1037 在霍格沃茨找零钱
转跳点:
- JS+CSS - table 表格固定表头和第一列、内容可滚动 (转载)
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...
- crontab 实现Linux系统上定时任务的关键命令
附上原文链接 https://www.cnblogs.com/ftl1012/p/crontab.html 原文真是写得非常好,所谓他山之石可以攻玉~,我就不客气啦,哈哈
- 吴裕雄 Bootstrap 前端框架开发——Bootstrap 字体图标(Glyphicons):glyphicon glyphicon-bookmark
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name ...
- ACM-Fire Net
题目描述:Fire Net Suppose that we have a square city with straight streets. A map of a city is a squar ...