Safecracker(搜索)
http://acm.hdu.edu.cn/showproblem.php?pid=1015
/
题意;
从所给的一串字符串中选出5个字母假如是(A B C D E)使得A-B^2+C^3-D^4+E^5等于前面的数字
如果有多种答案,就输出字典序最大的五个
已知A=1 B=2 C=3......................
/
include
include
include
int tarNum;
char secret[25];//存放输入的字符串
int num[5];//存放的是选出来的5个字符所对应的数字
int charNum[26];//存放输入某一字符的个数,下标代表哪种字符,charNum[i]代表这种字符有多少个;
int power(int x,int n)//求x的n次方
{
int sum=1;
for(int i=1; i<=n; i++)
sum=sum*x;
return sum;
}
int dfs(int n)
{
if(n==5)
{
int sum=power(num[0],1)-power(num[1],2)+power(num[2],3)-power(num[3],4)+power(num[4],5);
if(sum==tarNum)return 1;//能找到返回1
return 0;//否则返回0
}
for(int i=25; i>=0; i--)//倒着找找到的第一个就是字典序最大的,找到之后就不用在找了
{
if(charNum[i])//如果这个字符没有用完 就继续使用
{
charNum[i]--;//当前使用过一次
num[n]=i+1;//如果不加一那么25代表的就是z了,但是26代表的是z
if(dfs(n+1))//如果搜到就返回不在搜了,因为你是倒着搜的,搜到的第一个就是最大的
return 1;
charNum[i]++;//记得还原,以便下一组用到
}
}
return 0;
}
int main()
{
while(scanf("%d %s",&tarNum,secret))
{
if(tarNum==0&&strcmp("END",secret)==0)break;
int length=strlen(secret);
memset(num,0,sizeof(num));
memset(charNum,0,sizeof(charNum));
for(int i=0; i<length; i++)//假如输入 ABBCCDDD
charNum[secret[i]-'A']++;//charNum[0]=1 charNum[1]=2 charNum[2]=2 charNum[3]=3
if(dfs(0))
{
for(int i=0; i<5; i++)
{
printf("%c",num[i]-1+'A');
}
printf("\n");
}
else printf("no solution\n");
}
return 0;
}
Safecracker(搜索)的更多相关文章
- 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(第一次用了搜索去遍历超时,第二次用for循环能够了,思路一样的)
Safecracker Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) Total S ...
- hdu - 1010 Tempter of the Bone (dfs+奇偶性剪枝) && hdu-1015 Safecracker(简单搜索)
http://acm.hdu.edu.cn/showproblem.php?pid=1010 这题就是问能不能在t时刻走到门口,不能用bfs的原因大概是可能不一定是最短路路径吧. 但是这题要过除了细心 ...
- 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 ...
- SQLSERVER走起微信公众帐号已经开通搜狗微信搜索
SQLSERVER走起微信公众帐号已经开通搜狗微信搜索 请打开下面链接 http://weixin.sogou.com/gzh?openid=oIWsFt-hiIb_oYqQHaBMoNwRB2wM ...
- solr_架构案例【京东站内搜索】(附程序源代码)
注意事项:首先要保证部署solr服务的Tomcat容器和检索solr服务中数据的Tomcat容器,它们的端口号不能发生冲突,否则web程序是不可能运行起来的. 一:solr服务的端口号.我这里的sol ...
- SQLServer地址搜索性能优化例子
这是一个很久以前的例子,现在在整理资料时无意发现,就拿出来再改写分享. 1.需求 1.1 基本需求: 根据输入的地址关键字,搜索出完整的地址路径,耗时要控制在几十毫秒内. 1.2 数据库地址表结构和数 ...
- HTML5轻松实现搜索框提示文字点击消失---及placeholder颜色的设置
在做搜索框的时候无意间发现html5的input里有个placeholder属性能轻松实现提示文字点击消失功能,之前还傻傻的在用js来实现类似功能... 示例 <form action=&quo ...
随机推荐
- js中浮点型运算 注意点
先看张图: 这是一个JS浮点数运算Bug,导致我树状图,数据合计不正确,,,,,,两个小数相加,出来那么多位小数 (这是修该之后的) 网上找到以下解决方式: 方法一:有js自定义函数 <sc ...
- AFN的坑--NSCachedURLResponse缓存
网络正常的情况下,如果服务器宕机或者数据库出错,会造成访问服务器报错的情况,一般报错的内容是:无法连接到服务器或者其它错误.且服务器 修复后,仍然报错.经过排查,终于找出了原因所在:AFNetwork ...
- jstl--c:choose标签
今天使用c:choose标签,一直报错: 严重: Servlet.service() for servlet CheckIncome threw exceptionorg.apache.jasper. ...
- 334. Increasing Triplet Subsequence My Submissions Question--Avota
问题描述: Given an unsorted array return whether an increasing subsequence of length 3 exists or not in ...
- SGU 152.Making round
不断向下取直到,忽略的数累计到一个百分比,给当前百分比加1. 这道题要避免处理浮点数,用余数来处理,不然会wa 9 #include <iostream> #include <cma ...
- shell用if
--------- shell用if出错了,Why? shell if 实例: site=github.com/fankcoder if [ $site == github.com/fankcoder ...
- php配置虚拟主机的配置步骤(hosts、httpd.conf、vhosts.conf)1.配置本地的dns文件2.配置apache的主配置文件3.配置Apache的虚拟主机
1.域名解析(DNS) 找到C:\Windows\System32\drivers\etc目录下的hosts文件,在里面进行添加对应的内容
- php 上传视频的代码
<html> <head> <meta http-equiv="Content-Type" content="text/html; char ...
- javascript为目标位置div等设置高度
应该是DOM的东西: document.getElementById("目标id").style.height = 多高(数值)+"px";
- php定时删除文件夹下文件(清理缓存文件)
<?php ignore_user_abort(); //客户端断开时,可以让脚本继续在后台执行 set_time_limit(0); //忽略php.ini设置的脚本运行时间限制 $inter ...