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 ...
随机推荐
- TDD(测试驱动开发)的推广方法论
- emmet 教程 emmet快捷键大全
Emmet的前身是大名鼎鼎的Zen coding,如果你从事Web前端开发的话,对该插件一定不会陌生.它使用仿CSS选择器的语法来生成代码,大大提高了HTML/CSS代码编写的速度,比如下面的演示: ...
- mac 终端下ssh 登录远程服务器不发输入中文
转:https://segmentfault.com/q/1010000000150673 用Mac的iterm2 ssh连上去,终端显示中文乱码,也不能输入中文,然而本地终端可以显示和输入. 解决方 ...
- React添加自定义属性
使用‘data-’前缀即可,代码举例 render(){ return ( <ul className={css.forUl}> { this.props.todo.map(functio ...
- Python朝花夕拾
Q1:HTTP Error 403: Forbidden python中经常使用urllib2.urlopen函数提取网页源码,但是有些时候这个函数返回的却是:HTTP Error 403: Forb ...
- 不使用jquery情况下循环添加绑定事件方法
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- 淘淘商城_day03_课堂笔记
今日大纲 实现商品的编辑 实现商品的规格参数功能 搭建前台系统 实现首页商品类目的显示 商品的编辑 数据的编辑核心是:数据回显. 编辑按钮事件 判断选中的行数 弹出window 加载编辑页面,在页面加 ...
- Ubuntu系统上安装搜狗拼音输入法sogou
1. 首先在百度搜索搜狗拼音输入法Linux就能看到它的官网:http://pinyin.sogou.com/linux/ 下载后直接安装.安装成功后在控制台输入 im-config 如果选中的是fc ...
- Python读取ini配置文件
db_config.ini [baseconf] host=127.0.0.1 port=3306 user=root password=root db_name=evaluting_sys [con ...
- STS中Maven配置
最近接触maven, 配置过程中记录一下. STS是解压版的,启动后,可以看到已经有了Maven插件, , 但是,STS也同时给你了一个Maven,但是通常不建议使用STS自带的maven.使用默认的 ...