42求助
查看原帖
42求助
373530
Reply_楼主2022/10/10 19:31
#include<bits/stdc++.h> 
#define int long long
using namespace std;
int ans=0,a[101],a1[101];
string s;
bool vowel(char c)
{
	if(c=='A'||c=='E'||c=='I'||c=='O'||c=='U')
	{
		return 1;
	}
	return 0;
}
bool check()
{
	bool flag=0;
	for(int i = 0;i<s.size();i++)
	{
		if(s[i]=='L') 
		{
			flag=1;
		}
	}
	if(flag==0) return 0;
/*
	for(int i = 0;i<s.size();i++)
	{
		if(s[i]=='L') cout<<"L"<<" ";
		else cout << a[i]<< " ";
	}
	cout<<endl;*/
	for(int i = 0;i<s.size()-3;i++)
	{
		if(a[i]==1&&a[i+1]==1&&a[i+2]==1)
		{
			return 0;
		}
		if(a[i]==0&&a[i+1]==0&&a[i+2]==0)
		{
			return 0;
		}
	}
	return 1;
}
void dfs(int k,int sum)
{
	if(k==s.size())
	{/*
		for(int i = 0;i<s.size();i++)
	{
		if(s[i]=='L') cout<<"L"<<" ";
		else cout << a[i]<< " ";
	}
	cout<<endl;
		cout<<sum<<endl;*/
		if(check())
		{
			ans+=sum;
		}
		return;
	}
	if(a[k]==-1)
	{
		
		a[k]=1;
		dfs(k+1,sum*5);
		a[k]=0;
		dfs(k+1,sum*20);
		s[k]='L';
		dfs(k+1,sum);
		s[k]='_';
		a[k]=-1;
	}
	else
	{
		dfs(k+1,sum);
	}
}
signed main()
{
    cin >> s;    
    for(int i = 0;i<s.size();i++)
	{
		if(s[i]=='_') a[i]=-1;
    	else if(vowel(s[i]))
		{
			a[i]=1;
		} 
	}
	dfs(0,1);
	cout<<ans<<endl;
    return 0;
}

有没有大佬帮我看一下

2022/10/10 19:31
加载中...