求帮理解题意
查看原帖
求帮理解题意
490547
Invalid_Believer楼主2023/10/4 15:56
其中一个数可不可能变成多个数,如:
2→3
2→4
用深搜超时了,在想办法剪枝

原代码奉上

#include<cstdio>
#include<iostream>
#include<string>
#include<cmath>
using namespace std;
bool guize[110]={0};
short la,lb,n[40],l_n,k,ans=0;
string sn;
void dfs(int x){
	if(x==l_n){
		ans++;
		return;
	}
	for(int i=1;i<10;i++){
		if(guize[10*n[x]+i]==1){
			int lc=n[x];
			n[x]=i;
			dfs(x);
			n[x]=lc;
		}
	}
	dfs(x+1);
	return;

}
int main(){
	cin>>sn>>k;
	l_n=sn.length();
	for(int i=0;i<l_n;i++){
		n[i]=sn[i]-48;
	}
	for(int i=0;i<k;i++){
		cin>>la>>lb;
		guize[10*la+lb]=1;
	}
	dfs(0);
	cout<<ans;
	return 0;
}

求大佬解答!!!
2023/10/4 15:56
加载中...