D题求调
  • 板块学术版
  • 楼主Konjac_C
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/3/9 21:45
  • 上次更新2024/3/9 23:30:09
查看原帖
D题求调
1282142
Konjac_C楼主2024/3/9 21:45

WA6,TLE6

#include <bits/stdc++.h>
using namespace std;
string c;
int len;
int m[105],ans=1e9;
string a[105][15];
void dfs(int x,int inx,string s,int step)
{
	if(s==c){
		ans=min(ans,step);
		return;
	}
	if(x==len) return;
	for(int i=1;i<=m[x];i++){
		bool f=0;
		int now=inx,n=a[x][i].length();
		for(int j=0;j<n;j++){
			if(a[x][i][j]==c[now]) now++;
			else{
				f=1;break;
			}
		}
		if(!f){
			dfs(x+1,now,s+a[x][i],step+1);
		}
	}
	dfs(x+1,inx,s,step);
}
int main()
{
	ios::sync_with_stdio(0);cin.tie(0),cout.tie(0);
	cin>>c;
	len=c.length();
	int n;
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>m[i];
		for(int j=1;j<=m[i];j++) cin>>a[i][j];
	}
	dfs(1,0,"",0);
	if(ans!=1e9) cout<<ans;
	else cout<<-1;
	return 0;
}

2024/3/9 21:45
加载中...