暴力搜索。注意题目说每个字母对应的数字不同,这句话表明最多只有10个字母,所以暴力DFS绝对不会TLE。

#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std; char s[],t[];
char cun[];
int C[];
int ans[];
int tot;
int flag;
int rt[]; void DFS(int x)
{
int i;
if(x==tot)
{
t[]='\0';
strcpy(t,s);
for(i=;t[i];i++)
if(t[i]>='A'&&t[i]<='Z')
t[i]=ans[C[t[i]]]+'';
int num1=;
int num2=;
int num3=;
int num=;
int jia=;
int jian=;
for(i=;t[i];i++)
{
if(t[i]>=''&&t[i]<='') num=num*+t[i]-'';
if(t[i]=='+') num1=num,num=,jia=;
if(t[i]=='-') num1=num,num=,jian=;
if(t[i]=='=') num2=num,num=;
}
num3=num,num=;
if(jia==)
if(num1+num2==num3)
flag=;
if(jian==)
if(num1-num2==num3)
flag=;
return;
}
for(i=;i<=;i++)
{
if(rt[i]==)
{
ans[x]=i;
rt[i]=;
DFS(x+);
if(flag) return;
rt[i]=;
}
}
} int main()
{
int i;
while(~scanf("%s",s))
{
memset(C,,sizeof(C));
tot=;flag=;
for(i=;s[i];i++)
{
if(s[i]>='A'&&s[i]<='Z')
{
if(C[s[i]]==)
{
C[s[i]]=tot;
cun[tot]=s[i];
tot++;
}
}
}
memset(rt,,sizeof(rt));
DFS();
int flag[];
int shuzi[];
memset(flag,,sizeof(flag));
for(i=;i<tot;i++)
{
flag[cun[i]]=;
shuzi[cun[i]]=ans[i];
}
for(i='A';i<='Z';i++)
if(flag[i])
printf("%c %d\n",i,shuzi[i]);
}
return ;
}

POJ 3548 Restoring the digits的更多相关文章

  1. poj 3373 Changing Digits (DFS + 记忆化剪枝+鸽巢原理思想)

    http://poj.org/problem?id=3373 Changing Digits Time Limit: 3000MS   Memory Limit: 65536K Total Submi ...

  2. poj 2720 Last Digits

    Last Digits Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 2233   Accepted: 474 Descri ...

  3. POJ 3373 Changing Digits(DP)

    题目链接 记录路径的DP,看的别人的思路.自己写的也不好,时间居然2000+,中间的取余可以打个表,优化一下. 写的各种错,导致wa很多次,写了一下午,自己构造数据,终于发现了最后一个bug. dp[ ...

  4. POJ 3373 Changing Digits 好蛋疼的DP

    一開始写的高位往低位递推,发现这样有些时候保证不了第四条要求.于是又開始写高位往低位的记忆化搜索,又发现传參什么的蛋疼的要死.然后又发现高位開始的记忆化搜索就是从低位往高位的递推呀,遂过之. dp[i ...

  5. POJ 3373 Changing Digits 记忆化搜索

    这道题我是看了别人的题解才做出来的.题意和题解分析见原文http://blog.csdn.net/lyy289065406/article/details/6698787 这里写一下自己对题目的理解. ...

  6. POJ 3373 Changing Digits

    题目大意: 给出一个数n,求m,使得m的长度和n相等.能被k整除.有多个数符合条件输出与n在每位数字上改变次数最小的.改变次数同样的输出大小最小的.  共同拥有两种解法:DP解法,记忆化搜索的算法. ...

  7. ACM : POJ 2676 SudoKu DFS - 数独

    SudoKu Time Limit:2000MS     Memory Limit:65536KB     64bit IO Format:%lld & %llu POJ 2676 Descr ...

  8. [ACM训练] 算法初级 之 搜索算法 之 广度优先算法BFS (POJ 3278+1426+3126+3087+3414)

    BFS算法与树的层次遍历很像,具有明显的层次性,一般都是使用队列来实现的!!! 常用步骤: 1.设置访问标记int visited[N],要覆盖所有的可能访问数据个数,这里设置成int而不是bool, ...

  9. POJ 2151 Check the difficulty of problems

    以前做过的题目了....补集+DP        Check the difficulty of problems Time Limit: 2000MS   Memory Limit: 65536K ...

随机推荐

  1. C#模板打印excel

    using Microsoft.Office.Interop.Excel; //引用   public void PrintPriviewExcelFile(string filePath) {    ...

  2. JQ基础语法

    empty HTML 代码: <p>Hello, <span>Person</span> <a href="#">and perso ...

  3. Java并发编程:深入剖析ThreadLocal(转载)

    Java并发编程:深入剖析ThreadLocal(转载) 原文链接:Java并发编程:深入剖析ThreadLocal 想必很多朋友对ThreadLocal并不陌生,今天我们就来一起探讨下ThreadL ...

  4. sql server 数据库创建链接服务器访问另外一个sql server 数据库

    继上篇在sql server中创建链接服务器访问oracle数据库:http://www.cnblogs.com/527289276qq/p/4770379.html 本文介绍在sql server中 ...

  5. ionic的弹出框$ionicPopover

    在ionic.html中 在controller.js中

  6. adb shell dumpsys

    adb shell dumpsys activity activities -- class/packagename adb shell dumpsys batterystate --reset   ...

  7. IOS APP 国际化(实现不跟随系统语言,不用重启应用,代码切换stroyboard ,xib ,图片,其他资源)

    http://www.cnblogs.com/tangbinblog/p/3898046.html

  8. Strusts2--课程笔记6

    拦截器: Struts2的大多数核心功能都是通过拦截器实现的.拦截器之所以称之为"拦截器",是因为它可以在执行Action之前或之后拦截下用户请求,执行一些操作,以增强Action ...

  9. Windows下WordPress搭建博客过程

    搭建环境:Win7 + XAMPP5.5 + wordpress4.5.1 官网下载安装包,解压,拷贝到网站根目录(D:\IT\XAMPP5.5\htdocs\),重命名为blog(随意) 创建数据库 ...

  10. ios根据文本自适应 然后 搭建类似如下效果

    UIView * headView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, self.tbSecond.size.width, 0)]; hea ...