HDU3699(POJ 3989)A hard Aoshu Problem(暴力模拟dfs)
来源:互联网 发布:朋友圈制作软件 编辑:程序博客网 时间:2024/06/02 13:53
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3699
http://poj.org/problem?id=3989
题意:给你3个字符串(由小于等于8个大写字母组成)s1,s2,s3,每种字母用不同的数字代替,求满足表达式s1 (运算符) s2 = s3的式子的个数。
AC代码:
#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>#include <stack>#include <queue>#include <map>#include <set>#include <vector>#include <cstdlib>#include <string>#include <cmath>#define ll __int64using namespace std;char s1[10],s2[10],s3[10] ;int flag[30],num[10],len1,len2,len3,zi;ll Ans;void getans(){ ll a,b,c,t; a=b=c=0; int i; for(i=0;s1[i];i++) { t=num[flag[s1[i]-'A']]; if(!i&&!t&&len1>1) { return ; } a=a*10+t; } for(i=0;s2[i];i++) { t=num[flag[s2[i]-'A']]; if(!i&&!t&&len2>1) { return ; } b=b*10+t; } for(i=0;s3[i];i++) { t=num[flag[s3[i]-'A']]; if(!i&&!t&&len3>1) { return ; } c=c*10+t; } if(a+b==c) { Ans++;// printf("%I64d + %I64d %I64d\n",a,b,c); } if(a-b==c) { Ans++;// printf("%I64d - %I64d %I64d\n",a,b,c); } if(a*b==c) { Ans++;// printf("%I64d * %I64d %I64d\n",a,b,c); } if(b&&a%b==0&&a/b==c) { Ans++;// printf("%I64d / %I64d %I64d\n",a,b,c); }}void dfs(int n,int m){ int i; if(n==zi) { getans(); return; } for(i=0;i<=9;i++) { if((m&(1<<i))==0)//循环 { num[n]=i; dfs(n+1,m|(1<<i)); } }}int main(){ int t,i,j,n; scanf("%d",&t); while(t--) { Ans=0; zi=0; scanf("%s%s%s",s1,s2,s3); memset(flag,-1,sizeof(flag)); len1=strlen(s1); len2=strlen(s2); len3=strlen(s3); for(i=0;i<len1;i++) { n=s1[i]-'A'; if(flag[n]==-1) { flag[n]=zi; zi++; } } for(i=0;i<len2;i++) { n=s2[i]-'A'; if(flag[n]==-1) { flag[n]=zi; zi++; } } for(i=0;i<len3;i++) { n=s3[i]-'A'; if(flag[n]==-1) { flag[n]=zi; zi++; } } dfs(0,0); printf("%I64d\n",Ans); } return 0;}
0 0
- HDU3699(POJ 3989)A hard Aoshu Problem(暴力模拟dfs)
- HDU3699 A hard Aoshu Problem
- hdu3699 A hard Aoshu Problem
- POJ 3989 A hard Aoshu problem (模拟)
- HDU 4403 A very hard Aoshu problem (DFS暴力)
- HDU 4403 A very hard Aoshu problem(DFS+暴力)
- HDOJ 题目A very hard Aoshu problem(暴力,DFS)
- 暴力dfs 3699 A hard Aoshu Problem
- HDU 3699(J) ——A hard Aoshu Problem(DFS暴力搜索)
- POJ 3989 A hard Aoshu Problem 简单模拟
- HDU 3699 A hard Aoshu Problem (暴力搜索)
- HDU 4403 A very hard Aoshu problem(双向dfs)
- hdu 4403 A very hard Aoshu problem(dfs)
- HDU4403:A very hard Aoshu problem(DFS暴搜)
- HDU 4403 A very hard Aoshu problem (DFS+状压)
- HDOJ3699 A hard Aoshu Problem[暴力]
- HDU 4403 A very hard Aoshu problem (暴力+状态压缩)
- [ACM] hdu 4403 A very hard Aoshu problem (DFS暴搜数字)
- HDU 2191 珍惜现在,感恩生活
- 使用冰箱抢救硬盘数据
- UVA10910 - Marks Distribution(dp)
- KMP算法的代码实现二(用类)
- SharePoint Search之(六)Query Suggestion-搜索建议
- HDU3699(POJ 3989)A hard Aoshu Problem(暴力模拟dfs)
- 浅谈动规贪心 与0-1背包和分数背包问题
- wait,notify,notifyall
- UVA10943 - How do you add?(DP)
- typedef和#define的用法与区别
- 并查集详解
- 第九周大星小星
- 第12周项目3(1)-阶乘
- 微信客户端内部推荐项目总结