马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
求助 , 题解看不懂 , 求解释和思路#include<bits/stdc++.h>
using namespace std;
const int mod = 2012;
string s;
int a[100005] = {0, 1}, x = 1;
int main(){
cin >> s;
for(int i = 0; i < s.size(); i++){ // 循环体内是什么意思 , 不理解
if(x <= 0) break;
if(s[i] == ')'){
x--;
for(int j = 1; j <= x; j++) a[j] = (a[j]+a[j+1]) % mod;
}
else{
x++;
for(int j = x; j >= 1; j--)a[j] = (a[j]+a[j-1]) % mod;
}
a[x+1] = 0;
}
if(x==1) cout << a[1];
else cout << 0;
return 0;
}
输入 :输出 :解释 :AAAA
BBBB
ABBA
BAAB
ABAB
BABA
bool isValid(char * s){
int n = strlen(s); //计算字符串长度
//定义一个栈并初始化
char stack[n];
int top = 0;
//把s中的数据判断是否可以入栈
for(int i = 0;i<n;i++)
{
char ch = s[i]; //将数据存入ch数组
if(ch == '(' || ch == '[' || ch=='{')
{
//满足括号左半边的入栈
stack[top++] = ch;
}
else
{
char ch1 = 'u'; //初始化
if(top > 0)
{
//
ch1 = stack[top-1];
}
if( (top > 0) &&
(ch1 == '(' && ch == ')') ||
(ch1 == '[' && ch ==']') ||
(ch1 =='{' && ch == '}')
)
{
//出栈
top--;
}
else
{
return false;
}
}
}
//判空
if(top == 0)
{
return true;//完成
}
else
{
return false;
}
}
|