hdu1015(Safecracker )
"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."
11700519 ZAYEXIWOVU
3072997 SOUGHT
1234567 THEQUICKFROG
0 END
YOXUZ
GHOST
no solution
#include<stdio.h>
#include<string.h>
#include<math.h>
int vist[1000],flog,len,target,s[10],top,loction[10];
int m[1000];
int cmp()
{
int v,w,x,y,z;//一定要注意转换成int型的精度问题
v=s[1];
w=(int)(pow(s[2]*1.0,2.0)+0.5);
x=(int)(pow(s[3]*1.0,3.0)+0.5);
y=(int)(pow(s[4]*1.0,4.0)+0.5);
z=(int)(pow(s[5]*1.0,5.0)+0.5);
if(v-w+x-y+z==target)
return 1;//相等反回1
return 0;
}
void DFS(int n)
{
int i;
s[++top]=m[n];//放数的栈
loction[top]=n;//记绿m[n]的位置
vist[n]=1;//表示第n个位置被访问了 if(top==5)//相等就可以比较
flog=cmp();
if(flog)//为真,则找到了不用往下
return ;
if(top<5)//只有栈中小于5个数才继续可以放数
{
for(i=1;i<=len;i++)
if(vist[i]==0)
{
DFS(i);
if(flog)//用来结束上层的DFS
return ;
}
} vist[n]=0;top--;//退回
}
int main()
{
char str[1000],tem;
int i,j,e;
while(scanf("%d %s",&target,str)>0)
{
if(target==0&&strcmp(str,"END")==0)
break;
flog=0;
len=strlen(str);
for(i=0;i<len;i++)//按字典序从大到小排
{
e=i;
for(j=i+1;j<len;j++)
if(str[e]<str[j])
e=j;
tem=str[i];str[i]=str[e];str[e]=tem;
}
for(i=0;i<len;i++)//变成数字
m[i+1]=str[i]-'A'+1; for(i=1;i<=len;i++)//以第i个数为开头
{
memset(vist,0,sizeof(vist));
top=0;
DFS(i);
if(flog)
break;
}
if(flog)
{
for(i=1;i<=top;i++)
printf("%c",str[loction[i]-1]);
}
else
printf("no solution");
printf("\n");
}
}
hdu1015(Safecracker )的更多相关文章
- hdu1015 Safecracker (暴力枚举)
http://acm.hdu.edu.cn/showproblem.php?pid=1015 Safecracker Time Limit: 2000/1000 MS (Java/Others) ...
- hdu1015 Safecracker —— 回溯
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1015 代码1: #include<stdio.h>//hdu1015 #include&l ...
- hdu - 1010 Tempter of the Bone (dfs+奇偶性剪枝) && hdu-1015 Safecracker(简单搜索)
http://acm.hdu.edu.cn/showproblem.php?pid=1010 这题就是问能不能在t时刻走到门口,不能用bfs的原因大概是可能不一定是最短路路径吧. 但是这题要过除了细心 ...
- Safecracker 分类: HDU 搜索 2015-06-25 21:12 12人阅读 评论(0) 收藏
Safecracker Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total S ...
- HDU-1015(暴力)
Safecracker Problem Description === Op tech briefing, 2002/11/02 06:42 CST === "The item is loc ...
- ZOJ 1403&&HDU 1015 Safecracker【暴力】
Safecracker Time Limit: 2 Seconds Memory Limit: 65536 KB === Op tech briefing, 2002/11/02 06:42 ...
- HDOJ(HDU).1015 Safecracker (DFS)
HDOJ(HDU).1015 Safecracker [从零开始DFS(2)] 从零开始DFS HDOJ.1342 Lotto [从零开始DFS(0)] - DFS思想与框架/双重DFS HDOJ.1 ...
- HDU 1015 Safecracker【数值型DFS】
Safecracker Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total ...
- HDU 1015 Safecracker(第一次用了搜索去遍历超时,第二次用for循环能够了,思路一样的)
Safecracker Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) Total S ...
随机推荐
- .call()和.apply()相同点与不同点
.call()和.apply()相同点与不同点 function add(a,b) { alert(a+b); } function sub(a,b) { alert(a-b); } add.call ...
- Linq 学习(1) 概述
本篇简单回顾C#语言集合操作的变化,通过与Linq对等的面向对象的语法来认识Linq.Linq是Language Integrated Query, 初识Linq感觉跟SQL Server的Tsql很 ...
- Android -------- eclipse平台上的单元测试框架
eclipse平台上单元测试框架 继承android.test.AndroidTestCase类 清单文件中设置 设置指令集,与application标签同级 <instrumentation ...
- (原)anaconda 的安装与在pycharm中的版本切换
参考网页: http://continuum.io/blog/anaconda-python-3 http://conda.pydata.org/docs/intro.html#creating-py ...
- 记录一下最近开发web移动前端的过程
两个项目 第一个是公司网站的移动端,我所在的公司是做某方面的新闻站的. 所以说页面基本是以一条条的新闻+图文混排为主,顶部有一个自动slider+触屏滑动的功能, 使用的是swipe插件,轻量,简洁非 ...
- jQuery 定位锚点
// errorLine 为目标元素 scrollOffset(errorLine.offset()); function scrollOffset(scroll_offset) { $(" ...
- Codeforces 4D Mysterious Present
http://codeforces.com/contest/4/problem/D 题目大意: 给出n个信封,这n个信封有长和宽,给出卡片的尺寸,求取能够装入卡片的最长的序列,序列满足后一个的长和宽一 ...
- LeetCode_3 sum
Given an array S of n integers, are there elements a, b, c ? Find all unique triplets in the array w ...
- 如何用VS2010打开VS2012编辑的项目
找到打开项目的开始图标:,右键点击,选择有文本编辑器打开,用下面的语句将文件里面的前两句替换掉.Microsoft Visual Studio Solution File, Format Versi ...
- USART笔记 基于STM32F107VCT6
USART 通用同步异步收发器 通用同步异步收发器(USART)提供了一种灵活的方法与使用工业标准NRZ异步串行数据格式的外部设备之间进行全双工数据交换.USART利用分数波特率发生器提供宽范围的 ...