题目链接:A hard Aoshu Problem

DES:给三个字符串,包含的字符是A-E范围内的。长度都不超过8。每个字符可以而且只可以匹配一个数字。两个字符不能匹配相同的数字。前两个式子之间可以有+-*/四中关系。然后=第三个式子。问。会有多少种关系式。

#include<stdio.h>
#include<string.h>
#include<iostream>
using namespace std; char s[][];
int a[], b[], c[]; // 字符转换成数字后存储。
int num[]; // 每个字符匹配给哪个数字。
int len[];
int vis1[], vis2[]; //vis1[]保存下标对应字符是否出现。(A B C D E->0 1 2 3 4)。vis2[]标记枚举数字时标记是否已经出现过、
int ans;
int aa, bb, cc; //三个字符串对应的数字、 int check() // 不可有前导0的检查。
{
if (len[] > && num[a[]] == ) return ;
if (len[] > && num[b[]] == ) return ;
if (len[] > && num[c[]] == ) return ;
return ;
} void getnum() //根据每次枚举把三个字符串换成数字。
{
aa = , bb = , cc = ;
for (int i=; i<len[]; ++i)
{
aa = aa * + num[a[i]];
}
for (int i=; i<len[]; ++i)
{
bb = bb * + num[b[i]];
}
for (int i=; i<len[]; ++i)
{
cc = cc * + num[c[i]];
}
} int gettot() //看有几种运算关系。
{
int temp = ;
if (aa + bb == cc) temp++;
if (aa - bb == cc) temp++;
if (aa * bb == cc) temp++;
if (bb * cc == aa && bb != ) temp++;
return temp;
} void dfs(int x) // 暴力枚举每一个字符匹配十个数字的情况。
{
if (x == ) // x表示当前枚举第几个字母。如果枚举完就可以看当前匹配有几种关系式。
{
if (check())
{
getnum();
int cnt = gettot();
ans += cnt;
return;
}
} else if (vis1[x]) // 如果x对应的字符出现在三个字符串里、
{
for (int i=; i<=; ++i) // 开始枚举。
{
if (vis2[i] == )
{
num[x] = i;
vis2[i] = ;
dfs(x+);
vis2[i] = ; // 回溯
}
}
}
else dfs(x+); // 否则就继续匹配下一个字符。
} int main()
{
int t;
cin >> t;
while(t--)
{
ans = ;
memset(vis1, , sizeof(vis1));
memset(vis2, , sizeof(vis2));
// 输入处理
for (int i=; i<; ++i)
{
cin >> s[i];
len[i] = strlen(s[i]);
for (int j=; j<len[i]; ++j)
{
int temp = s[i][j] - 'A';
if (i == ) a[j] = temp;
if (i == ) b[j] = temp;
if (i == ) c[j] = temp;
vis1[temp]++;
}
}
dfs();
cout << ans << endl;
}
return ;
}

UVALive 5107 dfs暴力搜索的更多相关文章

  1. UVALive 5844 dfs暴力搜索

    题目链接:UVAive 5844 Leet DES:大意是给出两个字符串.第一个字符串里的字符可以由1-k个字符代替.问这两个字符串是不是相等.因为1<=k<=3.而且第一个字符串长度小于 ...

  2. hdu 1427 速算24点 dfs暴力搜索

    速算24点 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Problem De ...

  3. ACM: Gym 100935G Board Game - DFS暴力搜索

    Board Game Time Limit:2000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u  Gym 100 ...

  4. 洛谷P1019——单词接龙(DFS暴力搜索)

    https://www.luogu.org/problem/show?pid=1019#sub 题目描述 单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头的字母, ...

  5. [HDU 1427]速度计算24点(DFS暴力搜索)

    主题连接:  pid=1427">http://acm.hdu.edu.cn/showproblem.php?pid=1427 思路:简单的DFS.dfs(sum,next,p)表 ...

  6. poj 3050 Hopscotch DFS+暴力搜索+set容器

    Hopscotch Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 2774 Accepted: 1940 Description ...

  7. ACM 暴力搜索题 题目整理

    UVa 129 Krypton Factor 注意输出格式,比较坑爹. 每次要进行处理去掉容易的串,统计困难串的个数. #include<iostream> #include<vec ...

  8. [luogu 1092] 虫食算 (暴力搜索剪枝)

    传送门 Description Input 包含四行. 第一行有一个正整数 (N≤26). 后面的三行,每行有一个由大写字母组成的字符串,分别代表两个加数以及和.这3个字符串左右两端都没有空格,从高位 ...

  9. HDU 3131 One…Two…Five! (暴力搜索)

    题目链接:pid=3131">HDU 3131 One-Two-Five! (暴力搜索) 题意:给出一串数字,要求用加,减,乘,除(5/2=2)连接(计算无优先级:5+3*6=8*6= ...

随机推荐

  1. linux内核分析 第一周

    计算机是如何工作的 冯·诺依曼理论的要点是: 数字计算机的数制采用二进制:计算机应该按照程序顺序执行. 冯·诺依曼体系结构 根据冯·诺依曼体系结构构成的计算机,必须具有如下功能:把需要的程序和数据送至 ...

  2. 按时间间隔生成cron表达式

    cron表达式是使用任务调度经常使用的表达式了.对于通常的简单任务,我们只需要一条cron表达式就能满足.但是有的时候任务也可以很复杂. 最近我遇到了一个问题,一条任务在开始的时候要触发A方法,在结束 ...

  3. Tomcat下使用Log4j,按日期每天存放,解决catalina.out日志文件过大问题

    1. 准备jar包: log4j-1.2.17.jar (从 http://www.apache.org/dist/logging/log4j/1.2.17/ 下载) tomcat-juli.jar, ...

  4. POJ 3468 A Simple Problem with Integers(线段树&区间更新)题解

    Description You have N integers, A1, A2, ... , AN. You need to deal with two kinds of operations. On ...

  5. 【分布式计算】30分钟概览Spark分布式计算引擎

    本文主要帮助初学者快速了解Spark,不会面面俱到,但核心一定点到. Spark是继Hadoop之后的下一代分布式内存计算引擎,于2009年诞生于加州大学伯克利分校AMPLab实验室,现在主要由Dat ...

  6. 【Apache】的运营之道

    1.“一个修修补补”的服务? 大家可能听说过 Apache 是一个双关语 “a patchy Web server”,意思为一个修修补补的 web 服务,即通过一系列的补丁做的服务.但是这并不是 Ap ...

  7. 【第二十三章】 springboot + 全局异常处理

    一.单个controller范围的异常处理 package com.xxx.secondboot.web; import org.springframework.web.bind.annotation ...

  8. [Shiro] - Shiro之SpringBoot中的使用

    下载了运行项目后,访问路径:http://localhost/shiro/login 这篇应该在进阶后面的. shiro中的重中之重,一定要看. 基于springboot+thymeleaf+shir ...

  9. Python matplot画柱状图(一)

    图的存在,让数据变得形象化.无论多么复杂的东西,都是简单的组合. import matplotlib.pyplot as plt import numpy as np dict = {'A': 40, ...

  10. python 进程队列

    #_*_coding:utf-8_*_ from multiprocessing import Process,Queue import os,time def f(q,n): q.put([n,'h ...