POJ 3548 Restoring the digits
暴力搜索。注意题目说每个字母对应的数字不同,这句话表明最多只有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的更多相关文章
- poj 3373 Changing Digits (DFS + 记忆化剪枝+鸽巢原理思想)
http://poj.org/problem?id=3373 Changing Digits Time Limit: 3000MS Memory Limit: 65536K Total Submi ...
- poj 2720 Last Digits
Last Digits Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 2233 Accepted: 474 Descri ...
- POJ 3373 Changing Digits(DP)
题目链接 记录路径的DP,看的别人的思路.自己写的也不好,时间居然2000+,中间的取余可以打个表,优化一下. 写的各种错,导致wa很多次,写了一下午,自己构造数据,终于发现了最后一个bug. dp[ ...
- POJ 3373 Changing Digits 好蛋疼的DP
一開始写的高位往低位递推,发现这样有些时候保证不了第四条要求.于是又開始写高位往低位的记忆化搜索,又发现传參什么的蛋疼的要死.然后又发现高位開始的记忆化搜索就是从低位往高位的递推呀,遂过之. dp[i ...
- POJ 3373 Changing Digits 记忆化搜索
这道题我是看了别人的题解才做出来的.题意和题解分析见原文http://blog.csdn.net/lyy289065406/article/details/6698787 这里写一下自己对题目的理解. ...
- POJ 3373 Changing Digits
题目大意: 给出一个数n,求m,使得m的长度和n相等.能被k整除.有多个数符合条件输出与n在每位数字上改变次数最小的.改变次数同样的输出大小最小的. 共同拥有两种解法:DP解法,记忆化搜索的算法. ...
- ACM : POJ 2676 SudoKu DFS - 数独
SudoKu Time Limit:2000MS Memory Limit:65536KB 64bit IO Format:%lld & %llu POJ 2676 Descr ...
- [ACM训练] 算法初级 之 搜索算法 之 广度优先算法BFS (POJ 3278+1426+3126+3087+3414)
BFS算法与树的层次遍历很像,具有明显的层次性,一般都是使用队列来实现的!!! 常用步骤: 1.设置访问标记int visited[N],要覆盖所有的可能访问数据个数,这里设置成int而不是bool, ...
- POJ 2151 Check the difficulty of problems
以前做过的题目了....补集+DP Check the difficulty of problems Time Limit: 2000MS Memory Limit: 65536K ...
随机推荐
- C#模板打印excel
using Microsoft.Office.Interop.Excel; //引用 public void PrintPriviewExcelFile(string filePath) { ...
- JQ基础语法
empty HTML 代码: <p>Hello, <span>Person</span> <a href="#">and perso ...
- Java并发编程:深入剖析ThreadLocal(转载)
Java并发编程:深入剖析ThreadLocal(转载) 原文链接:Java并发编程:深入剖析ThreadLocal 想必很多朋友对ThreadLocal并不陌生,今天我们就来一起探讨下ThreadL ...
- sql server 数据库创建链接服务器访问另外一个sql server 数据库
继上篇在sql server中创建链接服务器访问oracle数据库:http://www.cnblogs.com/527289276qq/p/4770379.html 本文介绍在sql server中 ...
- ionic的弹出框$ionicPopover
在ionic.html中 在controller.js中
- adb shell dumpsys
adb shell dumpsys activity activities -- class/packagename adb shell dumpsys batterystate --reset ...
- IOS APP 国际化(实现不跟随系统语言,不用重启应用,代码切换stroyboard ,xib ,图片,其他资源)
http://www.cnblogs.com/tangbinblog/p/3898046.html
- Strusts2--课程笔记6
拦截器: Struts2的大多数核心功能都是通过拦截器实现的.拦截器之所以称之为"拦截器",是因为它可以在执行Action之前或之后拦截下用户请求,执行一些操作,以增强Action ...
- Windows下WordPress搭建博客过程
搭建环境:Win7 + XAMPP5.5 + wordpress4.5.1 官网下载安装包,解压,拷贝到网站根目录(D:\IT\XAMPP5.5\htdocs\),重命名为blog(随意) 创建数据库 ...
- ios根据文本自适应 然后 搭建类似如下效果
UIView * headView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, self.tbSecond.size.width, 0)]; hea ...