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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • DBSCAN算法python实现(附完整数据集和代码)

    DBSCAN算法python实现(附完整数据集和代码)目录 一 算法思路二 算法实现三 算法实现过程中遇到的问题四 算法运行结果一 算法思路 DBSCAN 算法的核心是 延伸 先找到一个未访问的点 p 若该点是核心点 则创建一个新的簇 C 将其邻域中的点放入该簇 并遍历其邻域中的点 若其邻域中有点 q 为核心点 则将 q 的邻域内的点也划入簇 C 直到 C 不再扩展 直到最后所有的点都标记为已访问 点 p 通过密度可达来扩大自己的 地盘

    2026年2月5日
    0
  • 使用ComponentOne C1WebGrid控件「建议收藏」

    使用ComponentOne C1WebGrid控件「建议收藏」作者:SinoryComponentOne.Studio.Enterprise.2006中的(C1StudioAspNET2_T106)是著名的C1开发的针对ASP.NET2.0的一套控件库.为ASP.NET开发人员提供了功能丰富的Web开发组件。包括个表格,报表,图表,数据,用户界面和电子商务组件等支持.C1WebGrid是其中最基本的控件之一.下面介绍它的具体应用方法:添加引用:<…

    2022年10月6日
    3
  • IOC控制反转与DI依赖注入

    IOC控制反转与DI依赖注入新建UserDao接口新建UserDaoImpl实现类IOC控制反转与DI依赖注入~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~开发工具与关键技术:IntellijIDEASpring作者:周欢撰写时间:2021/1/19~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~IOC(控制反转)作用:实现将组件间的关系从程序内部提…

    2022年6月20日
    25
  • pycharm 中文乱码_pycharm中文字体设置

    pycharm 中文乱码_pycharm中文字体设置问题:pycarm里面的中文,没有办法正常显示原因:因为Pycharm会使用系统默认的字体,所以当系统中没有这个字体的时候,他就没法显示解决办法:sudoyum-yinstallfontconfig(安装字体库)安装完成后,在/usr/share目录就可以看到fonts和fontconfig目录了寻找中文字体(可以在windows里面找,路径:C:\Windows\Fonts)cd/usr/share/fonts&&sudomakedirchinese

    2022年8月29日
    6
  • SpringCloud(四)—Ribbon负载均衡算法及配置

    SpringCloud(四)—Ribbon负载均衡算法及配置

    2020年11月12日
    212
  • 怎么把sql删干净_sql的导入和导出的好处

    怎么把sql删干净_sql的导入和导出的好处程序数据库(PDB)文件保存着调试和项目状态信息,使用这些信息可以对程序的调试配置进行增量链接。在使用/debug生成时,会创建一个PDB文件。可以使用/debug:full或/debug:pdbonly生成应用程序。使用/debug:full生成将产生可调试的代码。使用/debug:pdbonly生成将产生PDB,但是不会产生通知JIT编译器调试信息可用…

    2022年9月25日
    7

发表回复

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

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