1 条题解

  • 1
    @ 2022-12-26 9:00:46

    这道题不算很难。

    方法一:

    我们只要遇到左括号,就将其入栈,遇到右括号,就判断栈是否为空,如果是空的,布尔变量flagflag变成false,如果不是空的,我们就判断栈顶是否是左括号,如果是左括号,就出栈,flagflag保持不变,否则变成false。

    代码如下:

    #include<iostream>
    #include<stack>
    using namespace std;
    char ch;
    stack<char>stk;
    bool flag=true;
    int main()
    {
    	while(cin>>ch&&ch!='@')
    	{
    		if(ch=='(')stk.push('(');
    		else if(ch==')')
    		{
    			if(stk.empty())flag=false;
    			else
    			{
    				if(stk.top()=='(')stk.pop();
    				else flag=false;
    			}
    		}
    	}
    	if(flag&&stk.empty())cout<<"YES";
    	else cout<<"NO";
    	return 0;
    }
    

    方法二:

    和上面的做法类似,但是我们把flagflag换成了cntcnt,只要有右括号没有匹配的左括号,cntcnt就加一,最后只需要判断cntcnt是否为0就行了。

    代码如下:

    #include<iostream>
    #include<stack>
    using namespace std;
    char ch;
    stack<char>stk;
    int cnt;
    int main()
    {
    	while(cin>>ch&&ch!='@')
    	{
    		if(ch=='(')stk.push('(');
    		else if(ch==')')
    		{
    			if(stk.empty())cnt++;
    			else
    			{
    				if(stk.top()=='(')stk.pop();
    				else cnt++;
    			}
    		}
    	}
    	if(!cnt&&stk.empty())cout<<"YES";
    	else cout<<"NO";
    	return 0;
    }
    
    • @ 2022-12-26 20:28:32

      @建议以后写题解时,在代码上加上注释

    • @ 2023-2-4 9:17:43

      @ 这题的测试数据可以再刁钻一点,我用这个代码就成功偷鸡了。

      #include <bits/stdc++.h>//直接使用万能头
      using namespace std;
      const int N = 1e5 + 10;
      const int INF = 0x3f3f3f3f;
      int main(){
      	long long a = 0,b = 0;
      	char c[10029];
      	cin >> c;
      	for(int i = 1;i <= 10029;i++){
      		if(c[i - 1] == '('){
      			a++;
      		}
      		if(c[i - 1] == ')'){
      			b++;
      		}
      		if(c[i - 1] == '@'){
      			break;
      		}
      	}
      	if(a == b){
      		cout << "YES";
      	}
      	else{
      		cout << "NO";
      	}
      	return 0;
      	}
      
    • @ 2023-12-13 22:14:08

      @ 行,想在弄(别问我为什么前段时间没弄)

    • @ 2023-12-13 22:14:21

      @ 是现在弄

Expressions on billboards(告示牌上的表达式)

信息

ID
48
时间
1000ms
内存
256MiB
难度
7
标签
(无)
递交数
33
已通过
9
上传者