• hdu1870:愚人节的礼物(栈)


    http://acm.hdu.edu.cn/showproblem.php?pid=1870

    Problem Description

    四月一日快到了,Vayko想了个愚人的好办法——送礼物。嘿嘿,不要想的太好,这礼物可没那么简单,Vayko为了愚人,准备了一堆盒子,其中有一个盒子里面装了礼物。盒子里面可以再放零个或者多个盒子。假设放礼物的盒子里不再放其他盒子。

    用()表示一个盒子,B表示礼物,Vayko想让你帮她算出愚人指数,即最少需要拆多少个盒子才能拿到礼物。

    Input

    本题目包含多组测试,请处理到文件结束。
    每组测试包含一个长度不大于1000,只包含'(',')'和'B'三种字符的字符串,代表Vayko设计的礼物透视图。
    你可以假设,每个透视图画的都是合法的。

    Output

    对于每组测试,请在一行里面输出愚人指数。

    Sample Input

    ((((B)()))())
    (B)

    Sample Output

    4
    1

    解题思路:

    把不包括B的括号全去掉,剩下的就是包裹B的,除以2就是盒子的数量。

    模拟入栈,因为包裹了B的一对括号一定是一个在B左边一个在B右边,所有不用担心会消除掉。

    #include <stdio.h>
    #include <string.h>
    #include <stack>
    #define N 1020
    using namespace std;
    char str[N];
    int main()
    {
    	int i;
    	char ch1, ch2;
    	stack<char>s;
    	while(scanf("%s", str)!=EOF)
    	{
    		while(!s.empty())
    			s.pop();
    		for(i=0; i<strlen(str); i++)
    		{
    			ch1=str[i];
    			if(!s.empty())
    			{
    				ch2=s.top();
    				if(ch1==')' && ch2=='(')
    					s.pop();
    				else
    					s.push(ch1);
    			}
    			else s.push(ch1);
    		}
    		printf("%d
    ", s.size()/2);
    	}
    	return 0;
    }
  • 相关阅读:
    TCP连接之报文首部
    Django基础篇--用户权限管理和组管理
    MySQL聚簇索引
    浅谈Redis之慢查询日志
    Django基础篇--模板和路由分发
    Django--数据库查询操作
    Django基础篇--Models
    Sqlautocode使用过程的一些坑
    关于域名的一点事
    unicode编码和utf8编码的区别
  • 原文地址:https://www.cnblogs.com/zyq1758043090/p/11852579.html
Copyright © 2020-2023  润新知