HDU 3699 A hard Aoshu Problem (暴力搜索)[通俗易懂]

HDU 3699 A hard Aoshu Problem (暴力搜索)

大家好,又见面了,我是全栈君。

题意:题意:给你3个字符串s1,s2,s3;要求对三个字符串中的字符赋值(同样的字符串进行同样的数字替换),


替换后的三个数进行四则运算要满足左边等于右边。求有几种解法。

Sample Input
   
   
2 A A A BCD BCD B

 


Sample Output
   
   
5 72

eg:ABBDE   ABCCC   BDBDE ;令 A = 1, B = 2, C = 0, D = 4, E = 5

12245 + 12000 = 24245;


注意没有前导零!



#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<string>
#include<queue>
#include<map>
#include<math.h>
#include<algorithm>
#include<iostream>
using namespace std;
const int kind = 26;
const int maxn = 250*1000; //注意RE,单词长度*单词个数
const int M = 5100000;
int vis[10],flag[10],l,ans;
char s1[10],s2[10],s3[10],s[10];
map<char,int>mp,dl;
void Cal()
{
	int a=0,b=0,c=0;
	for(int i=0;i<strlen(s1);i++)
		a=a*10+mp[s1[i]];
	for(int i=0;i<strlen(s2);i++)
		b=b*10+mp[s2[i]];
	for(int i=0;i<strlen(s3);i++)
		c=c*10+mp[s3[i]];
	if(a+b==c) ans++;
	if(a-b==c) ans++;
	if(a*b==c) ans++;
	if(b&&a==b*c) ans++;
}
void dfs(int num)
{
	if(num>=l) 
	{
		Cal();
		return;
	}
	for(int i=0;i<10;i++)
	{
		if(i==0&&dl[s[num]]) continue;
		if(!flag[i])
		{
			flag[i]=1;
			mp[s[num]]=i;
			dfs(num+1);
			flag[i]=0;
		}
	}
}
int main()
{
	int t;
	scanf("%d",&t);
	while(t--)
	{
		memset(vis,0,sizeof(vis));
		mp.clear();dl.clear();
		ans=0;
		scanf("%s%s%s",s1,s2,s3);
		if(strlen(s1)>1) dl[s1[0]]=1;
		if(strlen(s2)>1) dl[s2[0]]=1;
		if(strlen(s3)>1) dl[s3[0]]=1;
		int i,k,j;
		l=0;
		for(i=0;i<strlen(s1);i++)
		{
			if(vis[s1[i]-'A']) continue;
			vis[s1[i]-'A']++;
			s[l++]=s1[i];
		}
		for(i=0;i<strlen(s2);i++)
		{
			if(vis[s2[i]-'A']) continue;
			vis[s2[i]-'A']++;
			s[l++]=s2[i];
		}
		for(i=0;i<strlen(s3);i++)
		{
			if(vis[s3[i]-'A']) continue;
			vis[s3[i]-'A']++;
			s[l++]=s3[i];
		}
		dfs(0);
		printf("%d\n",ans);
	}
	return 0;
}
/*
2
A A A
BCD BCD B
*/


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/116457.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • VS Code关闭eslint校验

    VS Code关闭eslint校验一、产生原因:在编写vue代码的时候,一直因为格式问题报错,按照要求改了格式,虽不报错,但当选择格式化文档,就会再次报错,所以需要关闭格式校验功能。二、解决办法:①:若报错,可将鼠标放在报错位置,按照提示内容,单机右键,选择快速恢复;但后期影响继续存在②:关闭校验功能步骤:1.点击左下角的设置图标并选择设置2.搜索eslint,如图并勾选可取消报错:3.重启VSCode,编译时不再报错…

    2022年6月11日
    68
  • setfacl 权限导出_linux学习-setfacl设置特定目录用户权限

    setfacl 权限导出_linux学习-setfacl设置特定目录用户权限需求:设置用户test,test1对特定的目录有读写执行权限,后加的文件也是这个权限。-R表示递归-m表示设置文件acl规则setfacl-R-md:u:test:rwx/data2/testsetfacl-R-md:u:test1:rwx/data2/test–删除ACL规则使用-bsetfacl-R-b/data2/test上面的d:u:详见如下,而perms对应的是…

    2022年6月22日
    37
  • 基础乐理

    基础乐理

    2022年3月13日
    41
  • axios实现跨域三种方法_cors跨域axios

    axios实现跨域三种方法_cors跨域axios跨域:指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对JavaScript施加的安全限制。所谓同源是指,域名,协议,端口均相同,浏览器执行js脚本时,会检查这个脚本属于哪个页面,如果不是同源页面,就不会被执行。以下举例:(1)http://www.123.com/index.html调用http://www.123.com/server.php(非跨域)(2)…

    2025年10月30日
    3
  • 能关闭一切进程的无敌命令

    能关闭一切进程的无敌命令

    2021年7月29日
    356
  • 就是要让你搞懂Nginx,这篇就够了!

    点击上方“全栈程序员社区”,星标公众号 重磅干货,第一时间送达 作者:渐暖° blog.csdn.net/yujing1314/article/details/107000737 …

    2021年6月24日
    69

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号