配对类问题

描述现在,有一行括号序列,请你检查这行括号是否配对。

输入
第一行输入一个数N(0<N<=100),表示有N组测试数据。后面的N行输入多组输入数据,每组输入数据都是一个字符串S(S的长度小于10000,且S不是空串),测试数据组数少于5组。数据保证S中只含有"[","]","(",")"四种字符
输出
每组输入数据的输出占一行,如果该字符串中所含的括号是配对的,则输出Yes,如果不配对则输出No
样例输入
3
[(])
(])
([[]()])
样例输出
No
No
Yes

配对问题: 另备一个数组存在两者中的其中一者,然后利用该数组(越晚存入的其中一种种类)与原数组(越早出现的另一种类) 进行消对。如果在原数组遍历结束时 刚刚好消完则配对成功,否则要么出现备用数组提前用完(j<0) 要么出现备用数组没消亡(j>0)

#include<stdio.h>
#include<string.h>
int main()
{
char s[10002],c[10002];
int i,N,len,j,flag;
scanf("%d",&N);
while(N--)
{
scanf("%s",s);
len=strlen(s);
for(i=0,j=0,flag=1;i<len;i++)
{
if(s[i]==‘[‘ || s[i]==‘(‘ )
{
c[j++]=s[i];(相当于c[j]=s[i] j++)  ///将其中一个种类存入备用数组
}
else if(j>0 && ( (s[i]==‘]‘ && c[j-1]==‘[‘) || (s[i]==‘)‘ && c[j-1]==‘(‘) ) )  ////进行消对
{
j--;    
}
else/////////出现不配对情况 如 [ 与 )
{
flag=0;
break;
}
}
if(flag==1&&j==0)
{
printf("Yes\n");
}
else
{
printf("No\n");
}
}

return 0;
}

另外知识:在循环判断条件中加入flag条件 有利于提前终止 不必要的循环(只要有一个不符合 后面就不需要检验).比如素数判断

k=sqrt(n);

如 for(i=2;flag==1&&i<=k;i++)

{

if(n%i==0) flag=0;

}

当然也可以直接break;

时间: 2024-10-12 06:44:41

配对类问题的相关文章

数字化婚姻配对尝试问题(C++实现)

问题描述:一.标题: 数字化婚姻配对尝试 二.题目: 建立一个模型,来模拟推导社会男女择偶过程. 为了模型简化,一个人的特性指标有三个,这里假设为财富.样貌.品格,每个指标均可取值1-100之间任意数字.同样也对这3项指标有自己的需求.这3个需求值取值范围都在1-98间,当然三者的和必须为100.所以任意一个人可以用以下数组来表述: G(A.B.C.A1.B1.C1)G代表男,M代表女. 举例G11(80.50.40.10.30.60),表示男11号,拥有财富80.样貌50.品格40,对异性品格

GNU Emacs命令速查表

GNU Emacs命令速查表 第一章  Emacs的基本概念 表1-1:Emacs编辑器的主模式 模式 功能 基本模式(fundamental mode) 默认模式,无特殊行为 文本模式(text mode) 书写文字材料(第二章) 邮件模式(mail mode) 书写电子邮件消息(第六章) RMAIL模式(RMAIL mode) 阅读和组织电子邮件(第六章) 只读模式(view mode) 查看文件,但不进行编辑(第五章) shell模式(shell mode) 在Emacs里运行一个UNIX

蓝牙的连接配对和可视的工具类

现在网上比较流行的蓝牙工具类: @SuppressLint("NewApi") public class ClsUtils { public ClsUtils() { // TODO Auto-generated constructor stub } /** * /Settings/src/com/android/settings/bluetooth/CachedBluetoothDevice.java */ static public boolean createBond(Class

Android蓝牙自动配对Demo,亲测好使!!!

蓝牙自动配对,即搜索到其它蓝牙设备之后直接进行配对,不需要弹出配对确认框或者密钥输入框. 转载请注明出处http://blog.csdn.net/qq_25827845/article/details/52400782 经过最近一段时间得研究,针对网上给出的案例.总结了一个亲测好使的Demo. 说明如下: 1.本Demo用来连接蓝牙设备HC-05,如果你要连接其他蓝牙设备,注意修改相关名字以及修改设备初试pin值. 2.将Demo安装在Android手机上,点击按钮,可以实现与目标蓝牙设备的自动

hadoop中Text类 与 java中String类的区别

hadoop 中 的Text类与java中的String类感觉上用法是相似的,但两者在编码格式和访问方式上还是有些差别的,要说明这个问题,首先得了解几个概念: 字符集: 是一个系统支持的所有抽象字符的集合.字符是各种文字和符号的总称,包括各国家文字.标点符号.图形符号.数字等.例如 unicode就是一个字符集,它的目标是涵盖世界上所有国家的文字和符号: 字符编码:是一套法则,使用该法则能够对自然语言的字符的一个集合(如字母表或音节表),与其他东西的一个集合(如号码或电脉冲)进行配对.即在符号集

BZOJ 4205: 卡牌配对

4205: 卡牌配对 Time Limit: 20 Sec  Memory Limit: 512 MBSubmit: 173  Solved: 76[Submit][Status][Discuss] Description 现在有一种卡牌游戏,每张卡牌上有三个属性值:A,B,C.把卡牌分为X,Y两类,分别有n1,n2张. 两张卡牌能够配对,当且仅当,存在至多一项属性值使得两张卡牌该项属性值互质,且两张卡牌类别不同. 比如一张X类卡牌属性值分别是225,233,101,一张Y类卡牌属性值分别为11

java之AbstractStringBuilder类详解

目录 AbstractStringBuilder类 字段 构造器 方法   public abstract String toString() 扩充容量 void  expandCapacity(int minimumCapacity)   public int  length()   public int  capacity()   public void  ensureCapacity(int minimumCapacity) 反转 public AbstractStringBuilder

android 实现蓝牙自动配对连接

BluetoothConnectActivityReceiver.java:监听蓝牙配对的广播 代码: package com.imte.Broadcast; import com.imte.utils.ClsUtils; import com.itme.ActivityClass.R; import android.bluetooth.BluetoothDevice; import android.content.BroadcastReceiver; import android.conten

算法笔记_111:第五届蓝桥杯软件类省赛真题(Java本科A组)试题解答

 目录 1 猜年龄 2 李白打酒 3 神奇算式 4 写日志 5 锦标赛 6 六角填数 7 绳圈 8 兰顿蚂蚁 9 斐波那契 10 波动数列   前言:以下试题解答代码部分仅供参考,若有不当之处,还请路过的同学提醒一下~ 1 猜年龄 标题:猜年龄 小明带两个妹妹参加元宵灯会.别人问她们多大了,她们调皮地说:"我们俩的年龄之积是年龄之和的6倍".小明又补充说:"她们可不是双胞胎,年龄差肯定也不超过8岁啊." 请你写出:小明的较小的妹妹的年龄. 注意: 只写一个人的年龄数