7-9 Jack cheng的烦恼2

Jackcheng刚入初中时成绩是相当棒的,尤其令老师们感到惊奇的这孩子会编程。殊不知随着堕入游戏的魔道之中,Jackcheng仅有的编程知识不仅毫无长进,而且大大退化了。 这天他的数学老师突然了有了一个吃惊的想法,想通过促进学生们进行一些编程知识的学习,锻炼他们的逻辑能力,让学生们更好的学习math 。 因此他想起了Jackcheng 。 Jackcheng真的慌了 , 他不得不又向你求救了。

下面是他向你发的电子邮件:

大神: 急需大神帮忙啊。 帮我写一个程序吧。

问题描述: 括号匹配 对输入的括号串进行判断是否遵循数学上的括号的使用原则。

例如: (()) true ; ())( false ;

我们这里括号仅仅包括 () 和 {} 两种。

输入格式:
第一行给出n(n > 0 && n < 100000) , 代表输入的括号数量。接下来一行进行括号的输入。。

输出格式:
对输入的括号进行判断, 如果遵循数学上括号的使用原则,输出True , 否则输出False。

输入样例:
6
()}{()
输出样例:
False

题目思路:
设两个数存储(和{,初始为0,出现)和}让这两个数分别减1,出现负数直接break输出False

代码:

#include<stdio.h>
#include<string.h>
#include<stdlib.h>

int main(){
	char str[100005];
	int n;
	while(scanf("%d",&n)!=EOF){
		scanf("%s",str);
		int count1 = 0; //存储(
		int count2 = 0;//存储{
		int flag = 0;
		if(n % 2 != 0){   //奇数直接出来就行
			printf("False\n");
			continue;
		}
		else{
			for(int i = 0;i < strlen(str);i++){
				if(str[i] == '('){
					count1++;
					continue;
				}
				if(str[i] == ')'){
					count1--;
					if(count1 < 0){
						flag = 1;  //如果出现负数记录一下,然后break
						break;
					}
					continue;
				}
				if(str[i] == '{'){
					count2++;
					continue;
				}
				if(str[i] == '}'){
					count2--;
					if(count2 < 0){
						flag = 1;		//如果出现负数记录一下,然后break
						break;
					}
					continue;
				}
			}
		}
		if(flag == 1){
			printf("False\n");
		}
		else{
			printf("True\n");
		}
	}
	return 0;
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值