听灌多
  • 板块灌水区
  • 楼主Loyal_Soldier
  • 当前回复16
  • 已保存回复16
  • 发布时间2024/8/18 14:41
  • 上次更新2024/8/18 17:17:05
查看原帖
听灌多
1106246
Loyal_Soldier楼主2024/8/18 14:41

我用 dfs TLE了一个点,有没有dalao告诉我怎么优化。

#include<bits/stdc++.h>
using namespace std;
long long n,r;
char a[10100],b[10100];
bool flag[10100];
void dfs(int x,char y,int sum1,int sum2){
	if(x>r){
		if(sum1>=1&&sum2>=2){
			for(int i=1;i<=r;i++)
				cout<<b[i];
			cout<<endl;
		}
		return;
	}
	for(int i=1;i<=n;i++){
		if(!flag[i]&&a[i]>y){
			b[x]=a[i];
			flag[i]=1;
			if(a[i]=='a'||a[i]=='e'||a[i]=='i'||a[i]=='o'||a[i]=='u')
				dfs(x+1,a[i],sum1+1,sum2);
			else
				dfs(x+1,a[i],sum1,sum2+1);
			flag[i]=0;
		}
	}
}
int main() {
cin>>r>>n;
for(int i=1;i<=n;i++){
	cin>>a[i];
}
sort(a+1,a+n+1);
dfs(1,' ',0,0);
	return 0;
}
2024/8/18 14:41
加载中...