TLE求助
  • 板块CF47D Safe
  • 楼主LiaoYF1
  • 当前回复0
  • 已保存回复0
  • 发布时间2022/8/20 10:06
  • 上次更新2023/10/27 14:29:52
查看原帖
TLE求助
633466
LiaoYF1楼主2022/8/20 10:06

感觉复杂度没问题,也剪枝了,但是TLE
这题难度最多就黄吧

#include<iostream>
using namespace std;
string s[15];
int n,m,a[15],ans;
int cmp(string x,string y){
	int sum=0;
	for(int i=0;i<min(x.size(),y.size());i++){
		if(x[i]!=y[i])sum++;
	}
	return sum;
}
bool check(string now){
	for(int i=1;i<=m;i++){
		if(cmp(s[i],now)>a[i])return 0;
	}
	return 1;
}
void dfs(int k,string now){
	if(!check(now))return;
	if(k==n){
		for(int i=1;i<=m;i++){
			if(cmp(s[i],now)!=a[i]){
				return;
			}
		}
		ans++;
		return;
	}
	dfs(k+1,now+"0");
	dfs(k+1,now+"1");
}
int main(){
	//cout<<cmp("101","111");
	//2333sbsb
	cin>>n>>m;
	for(int i=1;i<=m;i++){
		cin>>s[i]>>a[i];
	}
	dfs(0,"");
	cout<<ans;
	return 0;
}
2022/8/20 10:06
加载中...