首页 > 试题广场 >

小红的括号串

[编程题]小红的括号串
  • 热度指数:10 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
\,\,\,\,\,\,\,\,\,\,如果在括号序列中插入字符 \tt +\tt 1 就可以得到正确的算术表达式,那么这个括号序列就称为合法的括号序列。例如,""、"\tt (())" 和 "\tt ()()" 是合法的括号序列,因为填入内容后可以表示为 ((1))(1)+(1) ,这都是合法的。
\,\,\,\,\,\,\,\,\,\,现在小红有 a 个 "\tt((" ,b 个 "\tt ))" ,c 个 "\tt()" ,d 个 "\tt )(" 。小红想知道能否将这些括号串连成一个合法的括号序列。
\,\,\,\,\,\,\,\,\,\,你可以阅读样例解释获得更多信息。

输入描述:
\,\,\,\,\,\,\,\,\,\,每个测试文件均包含多组测试数据。第一行输入一个整数 T\left(1 \leq T \leq 10^5\right) 代表数据组数,每组测试数据描述如下:
\,\,\,\,\,\,\,\,\,\,在一行上输入四个整数 a,b,c,d\left(0 \leq a, b, c, d \leq 10^9\right) 代表小红的括号序列。


输出描述:
\,\,\,\,\,\,\,\,\,\,对于每组数据,如果能够将这些括号串连成一个合法的括号序列,在一行上输出 \rm YES ,否则输出 \rm NO 。
示例1

输入

2
1 1 1 1
1 2 1 1

输出

YES
NO

说明

\,\,\,\,\,\,\,\,\,\,对于第一组测试数据,可以按照如下顺序拼接 "\tt ((" + "\tt )(" + "\tt ))" + "\tt()" ,填入内容后可以表示为 ((1)+(1))+(1) ,这是一个合法的括号序列。
import java.util.Scanner;
 
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int t = in.nextInt();
        String [] ans = new String [t];
        for (int i = 0 ; i < t ; i++) {
            long a = in.nextLong(), b = in.nextLong(),
                 c = in.nextLong(), d = in.nextLong();
            if (a == b) {
                if (a > 0) {
                    ans[i] = "YES";
                } else {
                    ans[i] =  d == 0 ? "YES" : "NO";
                }
            } else ans[i] = "NO";
        }
        for (String a : ans) {
            System.out.println(a);
        }
        in.close();
    }
}

发表于 2025-06-30 14:40:56 回复(0)