#4 #5 TLE 求助
查看原帖
#4 #5 TLE 求助
766106
Tr_Sup楼主2023/4/14 21:28
#include<bits/stdc++.h>
using namespace std;
int a[11][20]/*原数 长度 值:目标数*/,l[11],cnt[50][11];//变化 长度 计数 
int ans=0;
void dfs(string s,int n){
	//cout<<s<<' '<<n<<endl;
	ans++;
	int len=s.size();
	for(int i=n;i<len;i++){
		int x=s[i]-'0';
		for(int j=1;j<=l[x];j++){
			int y=a[x][j];
			if(!cnt[i][y]){//48 0
				cnt[i][y]=1;
				s[i]=char(y+48);
				dfs(s,i);
				cnt[i][y]=0;
				s[i]=char(x+48);
			}
		}
	}
	return ;
}
int main(){
	string s;
	int k;
	cin>>s>>k;
	int len=s.size();
	for(int i=0;i<len;i++){
		cnt[i][s[i]-'0']=1;
	}
	for(int i=1;i<=k;i++){
		int x,y;
		cin>>x>>y;
		a[x][++l[x]]=y;
	}
	dfs(s,0);
	cout<<ans<<endl;
}
2023/4/14 21:28
加载中...