hdu 1015(DFS)

Safecracker

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 13237    Accepted Submission(s): 6897

Problem Description

=== Op tech briefing, 2002/11/02 06:42 CST ===
"The
item is locked in a Klein safe behind a painting in the second-floor
library. Klein safes are extremely rare; most of them, along with Klein
and his factory, were destroyed in World War II. Fortunately old
Brumbaugh from research knew Klein‘s secrets and wrote them down before
he died. A Klein safe has two distinguishing features: a combination
lock that uses letters instead of numbers, and an engraved quotation on
the door. A Klein quotation always contains between five and twelve
distinct uppercase letters, usually at the beginning of sentences, and
mentions one or more numbers. Five of the uppercase letters form the
combination that opens the safe. By combining the digits from all the
numbers in the appropriate way you get a numeric target. (The details of
constructing the target number are classified.) To find the combination
you must select five letters v, w, x, y, and z that satisfy the
following equation, where each letter is replaced by its ordinal
position in the alphabet (A=1, B=2, ..., Z=26). The combination is then
vwxyz. If there is more than one solution then the combination is the
one that is lexicographically greatest, i.e., the one that would appear
last in a dictionary."
v - w^2 + x^3 - y^4 + z^5 = target
"For
example, given target 1 and letter set ABCDEFGHIJKL, one possible
solution is FIECB, since 6 - 9^2 + 5^3 - 3^4 + 2^5 = 1. There are
actually several solutions in this case, and the combination turns out
to be LKEBA. Klein thought it was safe to encode the combination within
the engraving, because it could take months of effort to try all the
possibilities even if you knew the secret. But of course computers
didn‘t exist then."
=== Op tech directive, computer division, 2002/11/02 12:30 CST ===
"Develop
a program to find Klein combinations in preparation for field
deployment. Use standard test methodology as per departmental
regulations. Input consists of one or more lines containing a positive
integer target less than twelve million, a space, then at least five and
at most twelve distinct uppercase letters. The last line will contain a
target of zero and the letters END; this signals the end of the input.
For each line output the Klein combination, break ties with
lexicographic order, or ‘no solution‘ if there is no correct
combination. Use the exact format shown below."

Sample Input

1 ABCDEFGHIJKL

11700519 ZAYEXIWOVU

3072997 SOUGHT

1234567 THEQUICKFROG

0 END

Sample Output

LKEBA

YOXUZ

GHOST

no solution

#include<iostream>
#include<cstdio>
#include<cmath>
#include<map>
#include<cstdlib>
#include<vector>
#include<set>
#include<queue>
#include<cstring>
#include<string.h>
#include<algorithm>
#define INF 0x3f3f3f3f
typedef long long ll;
typedef unsigned long long LL;
using namespace std;
const int N = 1e6+10;
const ll mod = 1e9+7;
char s[100];
int a[100];
int b[100];
int visited[100];
int n;
int flag=0;
void DFS(int t){
    if(flag==1)return;
    if(t==6){
        int sum1=b[1]+b[3]*b[3]*b[3]+b[5]*b[5]*b[5]*b[5]*b[5];
        int sum2=b[2]*b[2]+b[4]*b[4]*b[4]*b[4];
        if(sum1-sum2==n){
            flag=1;
            printf("%c%c%c%c%c\n",b[1]-1+‘A‘,b[2]-1+‘A‘,b[3]-1+‘A‘,b[4]-1+‘A‘,b[5]-1+‘A‘);
            return ;
        }
        return ;
    }
    for(int i=26;i>=1;i--){
        if(visited[i]==1)continue;
        else if(visited[i]==0&&a[i]==1){
            visited[i]=1;
            b[t]=i;
            DFS(t+1);
            visited[i]=0;
        }
    }
}
int main(){
    while(scanf("%d %s",&n,s)!=EOF){
        if(n==0&&strcmp(s,"END")==0)break;
        int len=strlen(s);
        flag=0;
        memset(a,0,sizeof(a));
        for(int i=0;i<len;i++){
            int tt=s[i]-‘A‘+1;
            a[tt]=1;
        }
        memset(visited,0,sizeof(visited));
        DFS(1);
        if(flag==0)cout<<"no solution"<<endl;

    }

}
时间: 2024-12-28 16:48:32

hdu 1015(DFS)的相关文章

hdu 1342(DFS)

Lotto Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 2933    Accepted Submission(s): 1386 Problem Description In a Lotto I have ever played, one has to select 6 numbers from the set {1,2,...,49

HDU 2821Pusher(DFS )

题意:是一个游戏,可以玩下,就很清楚了,给你有箱子的图,你现在选择一个初始位置,并确定推的方向序列,规则:你要和箱子至少有一个空格才可以推,每次是先拿掉一个箱子,再把剩余的箱子(如果还存在的话)推向下一格,选择一个方向后要一直沿着这个方向走到不能走为止. #include<bits/stdc++.h> #define cl(a,b) memset(a,b,sizeof(a)); #define LL long long #define out(x) cout<<x<<e

hdu - 1072(dfs剪枝)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1072 思路:深搜每一个节点,并且进行剪枝,记录每一步上一次的s1,s2:如果之前走过的时间小于这一次, 就说明有更短的:路径,所以就不用继续遍历下去. #include<iostream> #include<cstdio> #include<cstring> using namespace std; int a[20][20],step[20][20],tim[20][20

hdu 1181(DFS)变 形 课

变形课 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/65536 K (Java/Others)Total Submission(s): 22248    Accepted Submission(s): 8035 Problem Description 呃......变形课上Harry碰到了一点小麻烦,因为他并不像Hermione那样能够记住所有的咒语而随意的将一个棒球变成刺猬什么的,但是他发现了变形咒语的一个统一规

hdu 1015(Safecracker)(深搜)

Safecracker Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 8782    Accepted Submission(s): 4443 Problem Description === Op tech briefing, 2002/11/02 06:42 CST === "The item is locked in a Klei

hdu 1142(DFS+dijkstra)

#include<iostream> #include<cstdio> #include<cmath> #include<map> #include<cstdlib> #include<vector> #include<set> #include<queue> #include<cstring> #include<string.h> #include<algorithm> t

hdu 1015 Safecracker DFS解法 ,简单明了

Safecracker Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 9327    Accepted Submission(s): 4721 Problem Description === Op tech briefing, 2002/11/02 06:42 CST === "The item is locked in a Klei

HDU 1010:(DFS)

需要在确切的时间到达D处 此题特殊的地方在于剪枝方法:根据所处点与D处的曼哈顿距离和所剩步数的奇偶性剪枝.如果两者奇偶性不同,直接return #include"cstdio" #include"cmath" #include"cstring" #include"iostream" #include"queue" #define MAXN 10 using namespace std; int dx[4]=

HDU 1015 Safecracker(DFS)

Safecracker Problem Description === Op tech briefing, 2002/11/02 06:42 CST === "The item is locked in a Klein safe behind a painting in the second-floor library. Klein safes are extremely rare; most of them, along with Klein and his factory, were des