P1245 WA30分求调
  • 板块灌水区
  • 楼主D0000
  • 当前回复3
  • 已保存回复3
  • 发布时间2023/7/25 12:17
  • 上次更新2023/11/3 07:46:01
查看原帖
P1245 WA30分求调
982681
D0000楼主2023/7/25 12:17

记录

#include<bits/stdc++.h>
using namespace std;
map<char,int> m;
int n,l[100],la,head=0,tail=0,quea[10000],queb[10000],last[10000];string a,b[100];
bool pd(int ll,int i){
	for(int j=0;j<l[i];j++)if(int(a[ll+j]-'0')!=m[b[i][j]])return 0;
	return 1;
}
void print(int know){
	if(last[know]==-1)return;
	print(last[know]);
	cout<<b[quea[know]];
	return;
}
int main(){
	int j=1;
	for(char i='a';i<='z';i++){
		m[i]=j;
		if(i=='c'||i=='f'||i=='i'||i=='l'||i=='n'||i=='q'||i=='t'||i=='w'||i=='z')j++;
	}
	cin>>n>>a;
	la=a.size();
	for(int i=0;i<n;i++){
		cin>>b[i];
		l[i]=b[i].size();
	}
	last[0]=-1;
	while(head<=tail){
		int ll=queb[head];
		for(int i=0;i<n;i++)if(ll+l[i]<=la&&pd(ll,i)){
			tail++;
			quea[tail]=i;
			queb[tail]=ll+l[i];
			last[tail]=head;
			if(queb[tail]==la)return print(tail),0;
		}
		head++;
	}
	cout<<"No Solutions!";
	return 0;
}
2023/7/25 12:17
加载中...