POJ 3989 A hard Aoshu problem (模拟)
2017-11-19 00:03
351 查看
题目地址
点击打开链接
dfs,模拟判断即可。 注意 S1%S2==0 和0开头的情况。
点击打开链接
dfs,模拟判断即可。 注意 S1%S2==0 和0开头的情况。
#include<iostream> #include<cstdio> #include<cstring> #include<string> #include<algorithm> #include<map> #define ll long long using namespace std; bool use[10]; //每个数字是否用过(用于枚举过程的判断) ll n,num,ans; ll que[10]; //枚举每个字母对应数字 map<char,int> exi; //字母对应的数字 string y[3]; //s1 s2 s3 void judge(){ ll ny[3]={0},i,j; for(j=0;j<3;j++){ for(i=0;i<y[j].size();i++){ //把每个字符串对应的数求出 ny[j]+=que[exi[y[j][i]]];ny[j]*=10; } ny[j]/=10; ll x=1; for(i=0;i<y[j].size()-1;i++)x*=10; //排除首字母对应0 if(x>ny[j] && y[j].size()>1)return; } if(ny[0]+ny[1]==ny[2])ans++; if(ny[0]*ny[1]==ny[2])ans++; if(ny[0]-ny[1]==ny[2])ans++; if((ny[1]!=0) && (ny[0]%ny[1]==0) && (ny[0]/ny[1]==ny[2]))ans++; } void dfs(int x){ if(x==num+1){judge();return;} for(int i=0;i<=9;i++)if(!use[i]){ //枚举数 que[x]=i;use[i]=1;dfs(x+1);use[i]=0; } } void setexi(){ int i,j; exi.clear(); for(i=0;i<=9;i++)use[i]=0; //初始化 num=ans=0; for(j=0;j<3;j++) for(i=0;i<y[j].size();i++) if(exi.find(y[j][i])==exi.end()) //判断出现了多少种字母,并与数字对应 exi[y[j][i]]=++num; } int main(){ cin>>n; while(n--){ for(int i=0;i<3;i++)cin>>y[i]; setexi(); dfs(1); cout<<ans<<endl; } return 0; }
相关文章推荐
- HDU3699(POJ 3989)A hard Aoshu Problem(暴力模拟dfs)
- POJ 3989 A hard Aoshu Problem 简单模拟
- POJ 3989 A hard Aoshu Problem
- {POJ}{3989}{A hard Aoshu Problem}{DFS}
- A hard Aoshu Problem HDU - 3699 模拟 map
- HDU 4403 A very hard Aoshu problem(暴搜)
- HDU - 4403 - A very hard Aoshu problem (DFS)
- A very hard Aoshu problem
- HDU 3699 A hard Aoshu Problem
- uva 101 POJ 1208 The Blocks Problem 木块问题 vector模拟
- HDU 4403 A very hard Aoshu problem (暴力+状态压缩)
- POJ 1208 TheBlocks Problem (模拟+队列)
- HDU 4403 A very hard Aoshu problem
- HDU 4403 A very hard Aoshu problem (状态压缩+枚举)
- POJ 1208 The Blocks Problem(模拟)
- HDU 4403 A very hard Aoshu problem (DFS+状压)
- HDU 4403 A very hard Aoshu problem(dfs爆搜)
- hdu - 4403 - A very hard Aoshu problem(dp + dfs + map + 乘法原理)
- HDU 4403 A very hard Aoshu problem(DFS)
- 【HDOJ】4403 A very hard Aoshu problem