热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

HDU1015Safecracker

原题目链接:HDU1015分类:HDU暴力回溯DFS题意:给temp赋一个值,然后给出一个字符串(不会出现

原题目链接:HDU1015




分类:

HDU 暴力 回溯 DFS



题意:

给temp赋一个值,然后给出一个字符串(不会出现相同字母,即字符串最长26),从中选出5个字母最为v,w,x,y,z(A=1, B=2, …, Z=26)使之满足等式v - w^2 + x^3 - y^4 + z^5 = target ,并输出由这5个字母组成字典序最大的字符串,不存在输出no solution



样例输入输出:

Sample Input:

1 ABCDEFGHIJKL
11700519 ZAYEXIWOVU
3072997 SOUGHT
1234567 THEQUICKFROG
0 END

Sample Output:

LKEBA
YOXUZ
GHOST
no solution



想法:


  • dfs深搜
  • 最大数据:26 * 25 * 24 * 23,可以直接暴力5层循环



代码:

DFS深搜:(31ms)

//31ms
#include
using namespace std;
const int maxn = 1111;
char str[maxn],ch[maxn],max_ch[maxn];
int vis[11111];
int flag,temp,len;int cal(char a,char b,char c,char d,char e){int z,x,v,n,m;z=a-'A'+1;x=(b-'A'+1)*(b-'A'+1);v=(c-'A'+1)*(c-'A'+1)*(c-'A'+1);n=(d-'A'+1)*(d-'A'+1)*(d-'A'+1)*(d-'A'+1);m=(e-'A'+1)*(e-'A'+1)*(e-'A'+1)*(e-'A'+1)*(e-'A'+1);if((z-x+v-n+m)==temp) return 1;return 0;
}void dfs(int n){if(n&#61;&#61;5){if(cal(ch[0],ch[1],ch[2],ch[3],ch[4])&&strcmp(ch,max_ch)>0){strcpy(max_ch,ch);}}else{for(int i&#61;0;i<len;i&#43;&#43;){//int m &#61; str[i] - &#39;A&#39; &#43; 1;if(vis[str[i]]&#61;&#61;0){ch[n] &#61; str[i];vis[str[i]] &#61; 1;//标记用过 dfs(n&#43;1);vis[str[i]] &#61; 0;}}}
}int main() {freopen("in.txt","r",stdin);while(scanf("%d%s",&temp,str)!&#61;EOF&&(temp||strcmp(str,"END"))){memset(ch,&#39;\0&#39;,sizeof(ch));memset(max_ch,&#39;\0&#39;,sizeof(max_ch));memset(vis,0,sizeof(vis));len &#61; strlen(str);sort(str,str&#43;len);dfs(0);if(strlen(max_ch)!&#61;0) printf("%s\n",max_ch);else printf("no solution\n");}return 0;
}

暴力5循环&#xff1a;(46ms)

//46ms
#include
using namespace std;
const int maxn &#61; 1111;
char str[maxn],ch[maxn],max_ch[maxn];
int flag,temp;int cal(char a,char b,char c,char d,char e){int z,x,v,n,m;z&#61;a-&#39;A&#39;&#43;1;x&#61;(b-&#39;A&#39;&#43;1)*(b-&#39;A&#39;&#43;1);v&#61;(c-&#39;A&#39;&#43;1)*(c-&#39;A&#39;&#43;1)*(c-&#39;A&#39;&#43;1);n&#61;(d-&#39;A&#39;&#43;1)*(d-&#39;A&#39;&#43;1)*(d-&#39;A&#39;&#43;1)*(d-&#39;A&#39;&#43;1);m&#61;(e-&#39;A&#39;&#43;1)*(e-&#39;A&#39;&#43;1)*(e-&#39;A&#39;&#43;1)*(e-&#39;A&#39;&#43;1)*(e-&#39;A&#39;&#43;1);if((z-x&#43;v-n&#43;m)&#61;&#61;temp) return 1;return 0;
}int main() {freopen("in.txt","r",stdin);while(scanf("%d%s",&temp,str)!&#61;EOF&&(temp||strcmp(str,"END"))){memset(max_ch,&#39;\0&#39;,sizeof(max_ch));memset(ch,&#39;\0&#39;,sizeof(ch));flag &#61; 0;int len &#61; strlen(str);for(int a&#61;len-1;a>&#61;0;a--){for(int b&#61;len-1;b>&#61;0;b--){if(a&#61;&#61;b) continue;for(int c&#61;len-1;c>&#61;0;c--){if(c&#61;&#61;b||c&#61;&#61;a)continue;for(int d&#61;len-1;d>&#61;0;d--){if(d&#61;&#61;a||d&#61;&#61;b||d&#61;&#61;c)continue;for(int e&#61;len-1;e>&#61;0;e--){if(e&#61;&#61;a||e&#61;&#61;b||e&#61;&#61;c||e&#61;&#61;d) continue;if(cal(str[a],str[b],str[c],str[d],str[e])){flag &#61;1;ch[0]&#61;str[a],ch[1]&#61;str[b];ch[2]&#61;str[c],ch[3]&#61;str[d];ch[4]&#61;str[e],ch[5]&#61;&#39;\0&#39;;if(strcmp(ch,max_ch)>0)strcpy(max_ch,ch); } }}}}}if(flag) printf("%s\n",max_ch);else printf("no solution\n");}return 0;
}


推荐阅读
  • 在洛谷 P1344 的坏牛奶追踪问题中,第一问要求计算最小割,而第二问则需要找到割边数量最少的最小割。通过为每条边附加一个单位权值,可以在求解最小割时优先选择边数较少的方案,从而同时解决两个问题。这种策略不仅简化了问题的求解过程,还确保了结果的最优性。 ... [详细]
  • 本文对常见的字符串哈希函数进行了全面分析,涵盖了BKDRHash、APHash、DJBHash、JSHash、RSHash、SDBMHash、PJWHash和ELFHash等多种算法。这些哈希函数在不同的应用场景中表现出各异的性能特点,通过对比其算法原理、计算效率和碰撞概率,为实际应用提供了有价值的参考。 ... [详细]
  • 题目链接: Caninepoetry问题概述:给定一个仅包含小写字母的字符串,允许将任意位置的字符修改为任意其他小写字母。目标是通过最少次数的修改,使字符串中所有长度大于1的子串均满足特定条件。本文详细分析了该问题,并运用思维与贪心算法,提出了一种高效解决方案。通过对字符串的深入解析,我们探讨了如何在最小化修改次数的同时,确保所有子串符合要求。 ... [详细]
  • 单链表的高效遍历及性能优化策略
    本文探讨了单链表的高效遍历方法及其性能优化策略。在单链表的数据结构中,插入操作的时间复杂度为O(n),而遍历操作的时间复杂度为O(n^2)。通过在 `LinkList.h` 和 `main.cpp` 文件中对单链表进行封装,我们实现了创建和销毁功能的优化,提高了单链表的使用效率。此外,文章还介绍了几种常见的优化技术,如缓存节点指针和批量处理,以进一步提升遍历性能。 ... [详细]
  • 手指触控|Android电容屏幕驱动调试指南
    手指触控|Android电容屏幕驱动调试指南 ... [详细]
  • 本文介绍了如何在iOS平台上使用GLSL着色器将YV12格式的视频帧数据转换为RGB格式,并展示了转换后的图像效果。通过详细的技术实现步骤和代码示例,读者可以轻松掌握这一过程,适用于需要进行视频处理的应用开发。 ... [详细]
  • 2012年9月12日优酷土豆校园招聘笔试题目解析与备考指南
    2012年9月12日,优酷土豆校园招聘笔试题目解析与备考指南。在选择题部分,有一道题目涉及中国人的血型分布情况,具体为A型30%、B型20%、O型40%、AB型10%。若需确保在随机选取的样本中,至少有一人为B型血的概率不低于90%,则需要选取的最少人数是多少?该问题不仅考察了概率统计的基本知识,还要求考生具备一定的逻辑推理能力。 ... [详细]
  • 寒假作业解析:第三周 2月12日 第7题
    尽快完成之前的练习任务!每日一练2.1 Problem A Laurenty and Shop 的题目要求是选择两条不同的路线以最小化总的等待时间。简要分析:通过对比不同路线的等待时间,可以找到最优解。此问题可以通过动态规划或贪心算法来解决,具体取决于路线的复杂性和约束条件。 ... [详细]
  • 在探讨P1923问题时,我们发现手写的快速排序在最后两个测试用例中出现了超时现象,这在意料之中,因为该题目实际上要求的是时间复杂度为O(n)的算法。进一步研究题解后,发现有选手使用STL中的`nth_element`函数成功通过了所有测试点。本文将详细分析这一现象,并提出相应的优化策略。 ... [详细]
  • Objective-C 中的委托模式详解与应用 ... [详细]
  • Android中将独立SO库封装进JAR包并实现SO库的加载与调用
    在Android开发中,将独立的SO库封装进JAR包并实现其加载与调用是一个常见的需求。本文详细介绍了如何将SO库嵌入到JAR包中,并确保在外部应用调用该JAR包时能够正确加载和使用这些SO库。通过这种方式,开发者可以更方便地管理和分发包含原生代码的库文件,提高开发效率和代码复用性。文章还探讨了常见的问题及其解决方案,帮助开发者避免在实际应用中遇到的坑。 ... [详细]
  • 具备括号和分数功能的高级四则运算计算器
    本研究基于C语言开发了一款支持括号和分数运算的高级四则运算计算器。该计算器通过模拟手算过程,对每个运算符进行优先级标记,并按优先级从高到低依次执行计算。其中,加减运算的优先级最低,为0。此外,该计算器还支持复杂的分数运算,能够处理包含括号的表达式,提高了计算的准确性和灵活性。 ... [详细]
  • 在编程笔试和面试中,全排列算法因其适中的难度而备受青睐,不仅能够考察应聘者的算法基础,还能测试其对递归和回溯的理解。本文将深入解析全排列算法的实现原理,探讨其应用场景,并提供优化建议,帮助读者更好地掌握这一重要算法。 ... [详细]
  • 题目要求在给定区间 \([l, r]\) 内的所有整数中,通过最多 \(k\) 次操作,使得最终数组的 GCD(最大公约数)尽可能大。每次操作可以选择数组中的任意两个数,将其相乘后替换回数组中。本文将详细解析该问题的基本算法思路,并分享一些实用的解题技巧。 ... [详细]
  • 本文介绍了UUID(通用唯一标识符)的概念及其在JavaScript中生成Java兼容UUID的代码实现与优化技巧。UUID是一个128位的唯一标识符,广泛应用于分布式系统中以确保唯一性。文章详细探讨了如何利用JavaScript生成符合Java标准的UUID,并提供了多种优化方法,以提高生成效率和兼容性。 ... [详细]
author-avatar
mobiledu2502861463
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有