1 条题解

  • 0
    @ 2025-4-14 18:45:31

    C :

    #include <stdio.h>
    #include <string.h>
    #define MAX 26
    
    
    int main()
    {
    	char _stack[MAX];
    	int top;
    	char a[30];
    	while (scanf("%s", &a) != EOF)
    	{
    		top = -1;
    		for (int i = 0; i<strlen(a); i++)
    		{
    			//栈非空
    			if (top != -1)
    			{
    				//出栈
    
    				if (_stack[top] == '('&&a[i] == ')' || _stack[top] == '['&&a[i] == ']')
    					top--;
    				else{
    					_stack[++top] = a[i];
    				}
    			}
    			else{
    				_stack[++top] = a[i];
    			}
    		}
    		if (top == -1)
    		{
    			printf("Yes\n");
    		}
    		else
    			printf("No\n");
    	}
    
    	return 0;
    
    
    }
    
    

    C++ :

    #include <stdio.h>
    #include <stack>
    #include <string.h>
    using namespace std;
    int main()
    {
    	int len,i,check;
    	char a[50],c;
    	while(gets(a))
    	{
    		stack<char > que;
    		que.push('b');
    		check=1;
    		len=strlen(a);
    		for(i=0;i<len;i++)
    		{
    			if(a[i]=='('||a[i]=='[')
    			{
    			que.push(a[i]);
    			continue;
    		}
    			else
    			if(a[i]==')'||a[i]==']')
    			{
    				if(a[i]==')')
    				{
    					if(que.top()=='(')
    					{
    						que.pop();
    						continue;
    					}
    					else
    					{
    						check=0;
    						break;
    					}
    				}
    				if(a[i]==']')
    				{
    					if(que.top()=='[')
    					{
    						que.pop();
    						continue;
    					}
    					else
    					{
    						check=0;
    						break;
    					}
    				}
    			}
    		}
    		if(check&&que.size()==1)
    		printf("Yes\n");
    		else
    		printf("No\n");
    	}
    	return 0;
    }
    
    • 1

    信息

    ID
    3580
    时间
    1000ms
    内存
    128MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者