上午:
补题:
Beautiful Array
我这里为了方便处理字符就用了cin>>
/*
思路:
这其实就是括号匹配
就把"("压入栈中,遇到右边第一个")"时出栈
就可以找到最多的分出来的次数
然后和输入的次数作比较
最多的次数大于输入的就是可行1
否则0
*/
#include<bits/stdc++.h>
using namespace std;
char str[10000];
int top,num;
char Q[10000];
char pop()
{
return Q[--top];
}
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
int i,j;
int n,m;
//一定要记得把这几个数字给重置为0
num=0;
top=0;
scanf("%d %d",&n,&m);
for(i=1;i<=n;i++)
{
cin>>str[i];
}
for(int i=1;i<=n;i++)
{
if(str[i]=='(')
{
Q[top++]=str[i];
}
else
{
//虽然是要找最近的")"但是top也不一定是1,因为可能有连起来的"("
if(top!=0)
{
pop();
num++;
}
}
}
if(num>=m)
printf("1\n");
else
printf("0\n");
}
return 0;
}
下午:
继续补题;
(未果)
那个hard version 思路已经出来了
还在改
另外一个也差不多
晚上:
看书;
|