社区讨论

9#测试点RE

P1245电话号码参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@m2vb88e7
此快照首次捕获于
2024/10/30 11:21
去年
此快照最后确认于
2025/11/04 15:43
4 个月前
查看原帖
9#测试点到底是啥? 我的思路很简单,b[i]为到i号位置为止可能的方案,在此基础上接就行了。然后9#RE了
CPP
#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;
} 

回复

0 条回复,欢迎继续交流。

正在加载回复...