码迷,mamicode.com
首页 > 其他好文 > 详细

POJ 3548 Restoring the digits

时间:2015-07-26 09:45:41      阅读:129      评论:0      收藏:0      [点我收藏+]

标签:

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

#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;

char s[1000],t[1000];
char cun[1000];
int C[1000];
int ans[1000];
int tot;
int flag;
int rt[15];

void DFS(int x)
{
    int i;
    if(x==tot)
    {
        t[0]=\0;
        strcpy(t,s);
        for(i=0;t[i];i++)
            if(t[i]>=A&&t[i]<=Z)
                t[i]=ans[C[t[i]]]+0;
        int num1=0;
        int num2=0;
        int num3=0;
        int num=0;
        int jia=0;
        int jian=0;
        for(i=0;t[i];i++)
        {
            if(t[i]>=0&&t[i]<=9) num=num*10+t[i]-0;
            if(t[i]==+) num1=num,num=0,jia=1;
            if(t[i]==-) num1=num,num=0,jian=1;
            if(t[i]===) num2=num,num=0;
        }
        num3=num,num=0;
        if(jia==1)
            if(num1+num2==num3)
                flag=1;
        if(jian==1)
            if(num1-num2==num3)
                flag=1;
        return;
    }
    for(i=0;i<=9;i++)
    {
        if(rt[i]==0)
        {
            ans[x]=i;
            rt[i]=1;
            DFS(x+1);
            if(flag) return;
            rt[i]=0;
        }
    }
}

int main()
{
    int i;
    while(~scanf("%s",s))
    {
    memset(C,0,sizeof(C));
    tot=1;flag=0;
    for(i=0;s[i];i++)
    {
        if(s[i]>=A&&s[i]<=Z)
        {
            if(C[s[i]]==0)
            {
                C[s[i]]=tot;
                cun[tot]=s[i];
                tot++;
            }
        }
    }
    memset(rt,0,sizeof(rt));
    DFS(1);
    int flag[1000];
    int shuzi[1000];
    memset(flag,0,sizeof(flag));
    for(i=1;i<tot;i++)
    {
        flag[cun[i]]=1;
        shuzi[cun[i]]=ans[i];
    }
    for(i=A;i<=Z;i++)
        if(flag[i])
            printf("%c %d\n",i,shuzi[i]);
    }
    return 0;
}

 

POJ 3548 Restoring the digits

标签:

原文地址:http://www.cnblogs.com/zufezzt/p/4677115.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!