刘汝佳的题目感觉都是比较难以处理的,就像这道题目,一看数据简直觉得头大。。。加上这个英文我也看的想死

最后看别人博客的题意讲解才知道原来是要移牌。

然后如果熟练的使用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 链表和栈的使用的更多相关文章

  1. Java数据结构——用链表实现栈

    //================================================= // File Name : LinkStack_demo //---------------- ...

  2. 线性表 及Java实现 顺序表、链表、栈、队列

    数据结构与算法是程序设计的两大基础,大型的IT企业面试时也会出数据结构和算法的题目, 它可以说明你是否有良好的逻辑思维,如果你具备良好的逻辑思维,即使技术存在某些缺陷,面试公司也会认为你很有培养价值, ...

  3. Java用链表实现栈和队列

    1.用链表实现栈 package stack; /** * * @author denghb * */ class Link { public long dData; public Link next ...

  4. Java之链表实现栈结构

    package com.wzlove.stack; import java.util.Iterator; import java.util.NoSuchElementException; /** * ...

  5. 图解堆算法、链表、栈与队列(Mark)

    原文地址: 图解堆算法.链表.栈与队列(多图预警) 堆(heap),是一类特殊的数据结构的统称.它通常被看作一棵树的数组对象.在队列中,调度程序反复提取队列中的第一个作业并运行,因为实际情况中某些时间 ...

  6. java实现 数据结构:链表、 栈、 队列、优先级队列、哈希表

    java实现 数据结构:链表. 栈. 队列.优先级队列.哈希表   数据结构javavector工作importlist 最近在准备找工作的事情,就复习了一下java.翻了一下书和网上的教材,发现虽然 ...

  7. [Python] 数据结构--实现顺序表、链表、栈和队列

    说明: 本文主要展示Python实现的几种常用数据结构:顺序表.链表.栈和队列. 附有实现代码. 来源主要参考网络文章. 一.顺序表 1.顺序表的结构 一个顺序表的完整信息包括两部分,一部分是表中元素 ...

  8. 基于链表的栈(Java)

    package com.rao.linkList; /** * @author Srao * @className LinkedStack * @date 2019/12/3 13:59 * @pac ...

  9. Java 用链表实现栈和队列

    栈 是一种基于后进先出(LIFO)策略的集合类型.当邮件在桌上放成一叠时,就能用栈来表示.新邮件会放在最上面,当你要看邮件时,会一封一封从上到下阅读.栈的顶部称为栈顶,所有操作都在栈顶完成. 前面提到 ...

随机推荐

  1. FPGA调试技巧(Quartus 15.1 Standard平台)

    1.在SignalTap II Logic Analyzer(stp)观测信号,需要将待观察寄存器.网络节点的综合器属性设为synthesis noprune和synthesis keep,防止综合器 ...

  2. 51nod 1559 车和矩形

    http://www.51nod.com/Challenge/Problem.html#problemId=1559 倘若矩形是受保护的,那么矩形内每一行至少有一个车或者每一列至少有一个车 判断矩形内 ...

  3. 基于springboot实现Java阿里短信发送

    1.接口TestController import java.util.Random; import com.aliyuncs.DefaultAcsClient; import com.aliyunc ...

  4. 安装npm install时,长时间停留在fetchMetadata: sill 解决方法——换npm的源

    安装npm install时,长时间停留在fetchMetadata: sill mapToRegistry uri http://registry.npmjs.org/whatwg-fetch处, ...

  5. cf 764A、762A、764B

    颓废题 764A #include<bits/stdc++.h> #define LL long long #define N 100005 #define lowbit(x) x& ...

  6. tools.eclipse.内存配置

    环境:jdk1.7+eclipse luna 选择:Run ->Run Configurations, 在弹出框右侧中选择Arguments, 在VM arguments最后加入 -Xms256 ...

  7. 072-PHP数组的交集和差集

    <?php $arr1=array(1,3,4,5,34,78,99); //参加第一项竞赛的学生学号数组 $arr2=array(5,6,7,3,56,34,8,9); //参加第二项竞赛的学 ...

  8. java如何连接Oracle数据库问题

    Oracle数据库纯属自学,不对请留言改正! 在学Oracle前相信已经大致知道mysql或sqlserver数据库,这个跟前面两个不大一样,你安装的时候让你输入一个密码,貌似是一个系统管理员密码,跟 ...

  9. SciKit-Learn 教程

    本教程力求做到简单易懂.深入浅出,帮助你快速掌握机器学习通用库 SciKit-Learn. 机器学习是计算机科学的一个分支,研究的是无需人类干预,能够自己学习的算法. 与TensorFlow不同,Sc ...

  10. PGSQL基本操作语句

    ; --更新数据 ,,) ; --插入数据 ORDER BY app_name,flag asc/desc ; --查询数据并且排序 offset ; --查询起点0开始查询,返回5条数据 ORDER ...