关于 [ABC302C] Almost Equal 的某篇题解
  • 板块题目总版
  • 楼主Lwx112412
  • 当前回复0
  • 已保存回复0
  • 发布时间2025/2/5 01:39
  • 上次更新2025/2/5 01:40:03
查看原帖
关于 [ABC302C] Almost Equal 的某篇题解
1304032
Lwx112412楼主2025/2/5 01:39
我可不能告诉你我被这篇题解坑了一个多小时
#include<bits/stdc++.h>
using namespace std;
const int N=10;
string s[N];
int a[N][200],m,n;
bool b[N];
void dfs(int now,int x)//now是当前到哪个字符串,x是搜了几个
{
	if(x==n)
	{
		cout<<"Yes";
		exit(0);
	}
	for(int i=1;i<=n;i++)
	{
		if(!b[i])
		{
			int	sum=0;
			for(int j=0;j<=100;j++)
			{
				sum+=abs(a[now][j]-a[i][j]);
			}
			if(sum==2)//记得是差2
			{
				b[i]=1;
				dfs(i,x+1);
				b[i]=0;
			}
		}
	}
	return;
}
int main()
{
	cin>>n>>m;
	for(int i=1;i<=n;i++)
	{
		cin>>s[i];
	}
	for(int i=1;i<=n;i++)
	{
		for(int j=0;j<m;j++)
		{
			a[i][s[i][j]-'a']++;//记录每种字母各有多少
		}
	}
	for(int i=1;i<=n;i++)
	{
		b[i]=1;
		dfs(i,1);
		b[i]=0;
	}
	cout<<"No";
	return 0;
}

这篇题解用的是存储字母个数的方法,可以换一种方法 (主要是因为这么写过不了,其实我也不知道为啥,每一行代码看起来都很对(◎﹏◎)),例如将字符串更改顺序,使得后一个字符串能由前一个字符串只改变一个字母而得到

SO……

谁来给蒟蒻解释一下这是为啥

蒟蒻个人见解,大佬不喜勿喷!感谢合作!
2025/2/5 01:39
加载中...