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(搜索)的更多相关文章

  1. 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 ...

  2. HDU 1015 Safecracker(第一次用了搜索去遍历超时,第二次用for循环能够了,思路一样的)

    Safecracker Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) Total S ...

  3. hdu - 1010 Tempter of the Bone (dfs+奇偶性剪枝) && hdu-1015 Safecracker(简单搜索)

    http://acm.hdu.edu.cn/showproblem.php?pid=1010 这题就是问能不能在t时刻走到门口,不能用bfs的原因大概是可能不一定是最短路路径吧. 但是这题要过除了细心 ...

  4. HDOJ(HDU).1015 Safecracker (DFS)

    HDOJ(HDU).1015 Safecracker [从零开始DFS(2)] 从零开始DFS HDOJ.1342 Lotto [从零开始DFS(0)] - DFS思想与框架/双重DFS HDOJ.1 ...

  5. HDU 1015 Safecracker【数值型DFS】

    Safecracker Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total ...

  6. SQLSERVER走起微信公众帐号已经开通搜狗微信搜索

    SQLSERVER走起微信公众帐号已经开通搜狗微信搜索 请打开下面链接 http://weixin.sogou.com/gzh?openid=oIWsFt-hiIb_oYqQHaBMoNwRB2wM ...

  7. solr_架构案例【京东站内搜索】(附程序源代码)

    注意事项:首先要保证部署solr服务的Tomcat容器和检索solr服务中数据的Tomcat容器,它们的端口号不能发生冲突,否则web程序是不可能运行起来的. 一:solr服务的端口号.我这里的sol ...

  8. SQLServer地址搜索性能优化例子

    这是一个很久以前的例子,现在在整理资料时无意发现,就拿出来再改写分享. 1.需求 1.1 基本需求: 根据输入的地址关键字,搜索出完整的地址路径,耗时要控制在几十毫秒内. 1.2 数据库地址表结构和数 ...

  9. HTML5轻松实现搜索框提示文字点击消失---及placeholder颜色的设置

    在做搜索框的时候无意间发现html5的input里有个placeholder属性能轻松实现提示文字点击消失功能,之前还傻傻的在用js来实现类似功能... 示例 <form action=&quo ...

随机推荐

  1. java编程思想-异常

    DynamicFields类的setField方法里面的getField方法抛出的异常NoSuchFieldException 为什么是throw new RuntimeException(e);

  2. C#中关于webconfig的读写

    近期一个小网站需要一个计数的信息 偷懒不想用别的什么方法 原本想用个xml 无奈不太会使 虽然不推荐这种方法 不过还是记下来方便日后查看 webconfig信息 <?xml version=&q ...

  3. Arcgis 9.3升级Arcgis10.1需要注重的一点

    在项目启动时绑定一个证书文件: 在 Global.asax里面添加 void Application_Start(object sender, EventArgs e) { // Code that ...

  4. SQL Server 表字段值转换成字段名称(二)

    上次写了个比较简单的只有两个字段的例子,经要求在写个  3 个字段的示例 ,贴上来与大家共勉一下   如果你们有更好的方法,提供一下, 感激不尽. 示例如下: /*--drop table temp_ ...

  5. c++ Cout 输出格式

    控制符是在头文件iomanip.h中定义的对象.使用前必须把iomanip.h包含进来 1. I/O的书写格式 I/0流是输入或输出的一系列字节,当程序需要在屏幕上显示输出时,可以使用插入操作符“&l ...

  6. Long型整数,缄默溢出

    /** 长整数问题 @author husky */ public class LongDemo { public static void main(String[] args) { /** * 问题 ...

  7. 关于fork( )函数父子进程返回值的问题

    fork()是linux的系统调用函数sys_fork()的提供给用户的接口函数,fork()函数会实现对中断int 0x80的调用过程并把调用结果返回给用户程序. fork()的函数定义是在init ...

  8. 子元素的margin-top影响父元素原因和解决办法

    这个问题会出现在所有浏览器当中,原因是css2.1盒子模型中规定, In this specification, the expression collapsing margins means tha ...

  9. SQL中distinct的用法和left join查询的含义

    SQL中distinct的用法   1.作用于单列 2.作用于多列 3.COUNT统计 4.distinct必须放在开头 5.其他 在表中,可能会包含重复值.这并不成问题,不过,有时您也许希望仅仅列出 ...

  10. 给id赋值

    var div = document.getElementByTagName('div') div.id="mydiv";div.setAttribute("id&quo ...