9#测试点RE
  • 板块P1245 电话号码
  • 楼主aliah
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/10/30 11:20
  • 上次更新2024/10/30 16:43:22
查看原帖
9#测试点RE
1095195
aliah楼主2024/10/30 11:20

9#测试点到底是啥? 我的思路很简单,b[i]为到i号位置为止可能的方案,在此基础上接就行了。然后9#RE了

#include<bits/stdc++.h>
using namespace std;
struct st
{
	string s;
	int len,a[21];
};
int main()
{
	int n,m,i,j,k,w[26]={1,1,1,2,2,2,3,3,3,4,4,4,5,5,6,6,6,7,7,7,8,8,8,9,9,9};
	cin>>n;
	string s;
	cin>>s;
	m=s.size();
	st a[n];
	for(i=0;i<n;i++)
	{
		cin>>a[i].s;
		a[i].len=a[i].s.size();
		for(j=0;a[i].s[j];j++)
			a[i].a[j]=w[a[i].s[j]-'a'];
	}
	string b[m+1];
	for(i=0;i<=m;i++)
		b[i]="A";
	for(i=0;i<n;i++)
	{
		for(j=0;a[i].s[j];j++)
			if((s[j]-'0')!=a[i].a[j])
				break;
		if(a[i].s[j]==0)
			b[j-1]=a[i].s;
	}
	for(i=0;i<m;i++)
		if(b[i]!="A")
		{
			for(j=0;j<n;j++)
			{
				for(k=0;i+k+1<=m && a[j].s[k] && a[j].a[k]==s[i+k+1]-'0';k++);
				if(a[j].s[k]==0)
					b[i+k]=b[i]+" "+a[j].s;
			}
		}
	if(b[m-1]=="A")
		cout<<"No Solutions!";
	else 
		cout<<b[m-1];
	return 0;
} 
2024/10/30 11:20
加载中...