用了个很笨的办法才得了10分,想知道最优解
#include
using namespace std;
string s[100001];
int max1=0;
bool judge(int a,int con[100001],int num){//判断该下标是否使用过
for(int i=0;iif(a==con[i])
return 0;
}
return 1;
}
void judge2(string a){//判断owo出现的次数
int cout=0;
for(int i=1;i-1;i++){
if(a[i]=='w'){
if(a[i-1]=='o'&&a[i+1]=='o')
cout++;
}
}
if(max1void cal(int sum,int x,string a,int *con,int num){
string b;
if(sum==0){
judge2(a);
}
for(int i=1;i<=x;i++){
if(judge(i,con,num)){
con[num]=i;
b=a+s[i];
cal(--sum,x,b,con,++num);
b=s[i]+a;
cal(sum,x,b,con,num);
}
else
continue;
}
}
int main()
{
int n;cin>>n;
int con[100001];//记录下标
for(int i=0;i>s[i];
for(int i=0;i0],con,0);
cout<


#include <stdio.h>
#include <string.h>
int main()
{
int n, o, w, i, j;
char t1[1001], t2;
scanf("%d", &n);
getchar();
for (i = 0; i < n; i++)
{
o = 0;
w = 0;
fgets(t1, 1001, stdin);
for (j = 0; j < strlen(t1); j++)
{
t2 = t1[j];
if (t2 == 'o')
{
o++;
}
else if (t2 == 'w')
{
w++;
}
}
if (o > w)
{
printf("%d\n", w);
}
else
{
printf("%d\n", w > 0 ? w - 1 : 0);
}
}
return 0;
}