礼物包装 括号匹配 C语言栈操作

 这天,小特生日。他的好朋友给他送来了生日礼物,这些礼物都经过精心包装放在若干个盒子里,而礼物就放在最里层的盒子里。朋友给他送的礼物遵循了这样一条规则, 越有价值的礼物应该放在越深的盒子里。他收到礼物后,急切地想知道这些礼物的价值,于是他把他收到的礼物写成括号的形式表示出来。具体他是这样计算他的礼物的价值的:

      1.-对括号代表一个礼物盒子,盒子里面可以再放盒子,即括号里可以再放括号;若-对括号里没有括号,则代表里面放着礼物。

      2.单独的一对括号代表这个礼物只有1层包装,价值为1 (比如"()"表示价值为1的礼物)

      3.两个合法的括号序列的拼接而成的括号序列的价值是它们价值之和(比如"())"价值为1+1=2)

      4.礼物每在盒子里放的层数深-层, 它的价值就会翻倍。即嵌套括号序列的价值是,所嵌套的括号序列的价值的翻倍(比如((0))"价值为1*2* 2=4)

      根据小特判断礼物的规则,请告诉他,他所写的括号代表了多少价值的礼物。

      小特保证他写的括号是正确合法的

 

Input
一个只包含'('和')'的合法的括号序列S,代表小特写下的括号序列,一个合法的括号序列是这样定义的:1、()是合法的括号序列
2、若字符串A和B是合法的括号序列,那么AB也是合法的括号序列
3、若字符串A是合法的括号序列,那么(A)也是合法的括号序列2<= ISI <=50
Output
一一个数字,代表小特所写的括号序列所代表的礼物的价值
Sample Input
(()(()))

Sample Output
6
代码:

#include
#include
#include
#include
#include
using namespace std;
stack s;
char a[55];

int main()
{	
	int n,i,k,sum;
	while(~scanf("%s",&a))
	{
		k=0,sum=0;
		for(i=0;i

 

你可能感兴趣的:(C/C++,字符串———,栈&队列,c语言,栈)