68分之后,发现了错误,贴出来思路代码
查看原帖
68分之后,发现了错误,贴出来思路代码
142475
EMaK楼主2023/9/7 18:50
#include <iostream>
#include <cstring>
using namespace std;
int n,num[21],ans,lj[21][21],book[21];
string a[21];
char start;
void dfs(int step,int sum)
{
	int i,j,stepl=a[step].length();
	sum+=stepl;
	if(ans<sum) ans=sum;
	book[step]++;
	for(i=0;i<n;i++)
	{
		if(book[i]==2||lj[step][i]==0) continue;
		dfs(i,sum-lj[step][i]);
	}
	book[step]--;
	return;
}
int main()
{
	int i,j,k,q;
	bool tmp=1;
	cin>>n;
	for(i=0;i<n;i++)
	cin>>a[i];
	cin>>start;
	for(i=0;i<n;i++)
	{
		for(j=0;j<n;j++)
		{
			int il=a[i].length(),jl=a[j].length();
			for(k=0;k<il;k++)
			{
				for(q=0;q<=k;q++)
				{
					if(q==jl-1)
					{
						tmp=0;
						break;
					}
					if(a[i][il-k+q-1]!=a[j][q])
					{
						tmp=0;
						break;
					}
				}
				if(tmp==1)
				{
					lj[i][j]=k+1;
					tmp=1;
					break;
				}
				tmp=1;
			}
		}
	}
	for(i=0;i<n;i++)
	{
		if(a[i][0]==start) dfs(i,0);
	}
	cout<<ans;
    return 0;
}

如上是我的AC代码。 下面是之前的68分,1,2点错误的代码。

#include <iostream>
#include <cstring>
using namespace std;
int n,num[21],ans,lj[21][21],book[21];
string a[21];
char start;
void dfs(int step,int sum)
{
	int i,j,stepl=a[step].length();
	sum+=stepl;
	if(ans<sum) ans=sum;
	book[step]++;
	for(i=0;i<n;i++)
	{
		if(i==step||book[i]==2||lj[step][i]==0) continue;
		dfs(i,sum-lj[step][i]);
	}
	book[step]--;
	return;
}
int main()
{
	int i,j,k,q;
	bool tmp=1;
	cin>>n;
	for(i=0;i<n;i++)
	cin>>a[i];
	cin>>start;
	for(i=0;i<n;i++)
	{
		for(j=0;j<n;j++)
		{
			if(i==j) continue;
			int il=a[i].length(),jl=a[j].length();
			for(k=0;k<il;k++)
			{
				for(q=0;q<=k;q++)
				{
					if(q==jl-1)
					{
						tmp=0;
						break;
					}
					if(a[i][il-k+q-1]!=a[j][q])
					{
						tmp=0;
						break;
					}
				}
				if(tmp==1)
				{
					lj[i][j]=k+1;
					tmp=1;
					break;
				}
				tmp=1;
			}
		}
	}
	for(i=0;i<n;i++)
	{
		if(a[i][0]==start) dfs(i,0);
	}
	cout<<ans;
    return 0;
}

中间的区别在于,68分代码预设不能从原先在的单词接上原来的单词。假设龙头字母为E,只有一个ENVELOPE单词,正确答案为15,错误答案为8,因为可以从ENVELOPE再接回,变成ENVELOPENVELOPE。

2023/9/7 18:50
加载中...