hdu1015 Safecracker —— 回溯
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1015
代码1:
#include<stdio.h>//hdu1015
#include<string.h>
#include<math.h>
#include<stdlib.h> double tg;
int len;
char a[20],b[20];//a存输入的字母,从0开始存。 b存目标字母,从1开始。 int cmp(const void*a, const void*b)
{
return *(char*)b-*(char*)a;
} int solve(double sum,int n)//为什么int sum就不行呢?
{
if(n==6)
{
if(sum==tg)
return 1;
else
return 0;
} for(int i = 0;i<len; i++)
{
int j;
for(j = 1;j<n;j++)//寻找是否与已存的字母重复
if(a[i]==b[j]) break; if(j==n)//若不重复,则存入现在的b[n]中
{
double sum1 = sum;//记录原先的sum值,若不符合条件,则将其值还原
b[n] = a[i];
if(n%2)
sum += pow(b[n]-64,n);
else
sum -= pow(b[n]-64,n);
if(solve(sum,n+1))
return 1;
sum = sum1;//在递归的出口将sum还原为之前的值,这样才不会妨碍下一个字母的操作
}
}
return 0;
} int main()
{
while(scanf("%lf %s",&tg,a)==2 && (tg || strcmp(a,"END")))
{
len = strlen(a);
qsort(a,len,sizeof(a[0]),cmp);//将输入的字母排序,以便最大字典序输出
if(solve(0,1))
puts(b+1);//由于b从1开始存,所以输入的地址要加一个单位
else
puts("no solution");
}
return 0;
}
代码2:
#include<cstdio>//hdu1015 方法2
#include<cstring>
#include<cmath>
#include<cstdlib>
int tg;
int len;
char a[20],b[20]; int cmp(const void*a, const void*b)
{
return *(char*)b-*(char*)a;
} int solve(int n)
{
if(n==6)
{
double sum = pow(b[1]-64,1)-pow(b[2]-64,2) + pow(b[3]-64,3)- pow(b[4]-64,4)+ pow(b[5]-64,5);
if( sum == tg)
return 1;
else
return 0;
} for(int i = 0;i<len; i++)
{
int j;
for(j = 1;j<n;j++)
if(a[i]==b[j])
break; if(j==n)
{
b[n] = a[i];
if(solve(n+1))
return 1;
}
}
return 0;
} int main()
{
while(scanf("%d %s",&tg,a)==2 && (tg || strcmp(a,"END")))
{
len = strlen(a);
qsort(a,len,sizeof(a[0]),cmp);
if(solve(1))
puts(b+1);
else
puts("no solution");
}
return 0;
}
hdu1015 Safecracker —— 回溯的更多相关文章
- hdu1015 Safecracker (暴力枚举)
http://acm.hdu.edu.cn/showproblem.php?pid=1015 Safecracker Time Limit: 2000/1000 MS (Java/Others) ...
- hdu - 1010 Tempter of the Bone (dfs+奇偶性剪枝) && hdu-1015 Safecracker(简单搜索)
http://acm.hdu.edu.cn/showproblem.php?pid=1010 这题就是问能不能在t时刻走到门口,不能用bfs的原因大概是可能不一定是最短路路径吧. 但是这题要过除了细心 ...
- hdu1015(Safecracker )
Problem Description === Op tech briefing, 2002/11/02 06:42 CST === "The item is locked in a Kle ...
- hdu1015 —— 回溯
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1015 因为之前看了下刘汝佳的<算法入门经典>,就用类似打印全排列,八皇后的方法做.本以为不 ...
- HDU 1015 Safecracker(第一次用了搜索去遍历超时,第二次用for循环能够了,思路一样的)
Safecracker Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) Total S ...
- N皇后问题—初级回溯
N皇后问题,最基础的回溯问题之一,题意简单N*N的正方形格子上放置N个皇后,任意两个皇后不能出现在同一条直线或者斜线上,求不同N对应的解. 提要:N>13时,数量庞大,初级回溯只能保证在N< ...
- jQuery 2.0.3 源码分析 回溯魔法 end()和pushStack()
了解了jQuery对DOM进行遍历背后的工作机制,可以在编写代码时有意识地避免一些不必要的重复操作,从而提升代码的性能 从这章开始慢慢插入jQuery内部一系列工具方法的实现 关于jQuery对象的包 ...
- linux中oops信息的调试及栈回溯【转】
本文转载自:http://blog.csdn.net/kangear/article/details/8217329 ========================================= ...
- Java数据结构之回溯算法的递归应用迷宫的路径问题
一.简介 回溯法的基本思想是:对一个包括有很多结点,每个结点有若干个搜索分支的问题,把原问题分解为对若干个子问题求解的算法.当搜索到某个结点.发现无法再继续搜索下去时,就让搜索过程回溯(即退回)到该结 ...
随机推荐
- Visual Studio各版本下载链接
Visual Studio 2015 企业版 链接: https://pan.baidu.com/s/1NFGyIbm2RNsuwwEU-bYicQ 提取码: m961 Visual Studio 2 ...
- 匿名块的四个类型(type rowtype record table)
Oracle PL/SQL块 匿名块的四个类型 type rowtype record table ---- type (列类型) %type类型是指声明变量的时候,参考某个表的某个列的类型---- ...
- WM_SETFOCUS和WM_KILLFOCUS、WM_GETDLGCODE
procedure WMSetFocus (var Message: TWMSetFocus); message WM_SETFOCUS; //获得焦点 procedure WMKillFocus ...
- android:使用gallery和imageSwitch制作可左右循环滑动的图片浏览器
为了使图片浏览器左右无限循环滑动 我们要自己定义gallery的adapter 假设要想自己定义adapter首先要了解这几个方法 @Override public int getCount() { ...
- 基于RFS(robot framework selenium)框架模拟POST/GET请求执行自动化接口测试
打开RIDE添加测试用例 如: Settings Library Collections Library RequestsLibrary Test Cases ...
- ARP协议(1)什么是ARP协议
这是最近在看<TCP/IP具体解释>系列书总结出来的,之后会陆续把其它协议部分分享出来. 我尽量以简单易读.易懂的方式呈现出来,可是,因为文笔和水平有限.有些地方或许存在描写叙述上的不足或 ...
- Codeforces Round #243 (Div. 1)——Sereja and Squares
题目链接 题意: 给n个点,求能组成的正方形的个数. 四边均平行与坐标轴 大神的分析: 经典题 我们考虑每一种x坐标,显然仅仅有<= sqrt{N}个x坐标出现了> sqrt{N}次,我们 ...
- 模式匹配之尺度空间---scale space
转载:http://www.cnblogs.com/cfantaisie/archive/2011/06/14/2080917.html 主要步骤 1).尺度空间的生成: 2).检测尺度 ...
- 图像处理之滤波---gabor
http://blog.csdn.net/xiaowei_cqu/article/details/24745945 小魏北大
- 更改UISearchBar button属性
//点击搜索框时触发 - (BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar { self.theSearchUserSearchBa ...