`
My*Love
  • 浏览: 72202 次
  • 性别: Icon_minigender_1
  • 来自: 湖南
社区版块
存档分类
最新评论

用贪心算法处理删数问题

阅读更多
  其实对于算法,我确实研究的比较少,贪心算法也接触的不多,一次偶然的机会别人让叫我给他编个小程序,我才了解到那么一点点。
    这个程序是这样的,从控制台输入一个N位的数字,删除其中的K(0<K<N)位,按原顺序组成一个最大的数字,输出这个数字, 如:1891456删除其中的4位后组成的最大数为:956。如果不知道贪心算法的人,乍一看这题目确实还要想下,其实难点就在于一定要按照原来的顺序组合,如果使用贪心算法就能使问题简化,你只要比较相邻两个数的大小,如果前面的比后面的小,就把前面的那个数给去掉,去掉后再重新开始比较,直到达到要求为止,一种极端的情况,如果所有数字都是按照升序排列的,那就更好办了,只要删除前面的几位就可以了。
   其实我的想法也是来自别人算法,只是他用C++实现的,用到里面的函数库,使得这个程序很简单,因为我不懂C++,但我想C++和Java都是面向对象的语言,里面应该有很多功能相同的方法,结果查看文档还是被我找到了。其实这里关键就是怎样把比较后的那个数字给去掉的问题,想到过用数组,但它里面没有删除某个数后得到新数组的方法,后来突然发现了StringBuffer这个类,它里面有个deleteCharAt的方法,我觉得应该可以,并且用它的话还有个好处,你输入的数字不不受范围的约束,下面是我用Java实现的源码,还有原来参考的那个C++源码。我觉得实现的方法应该有很多,在此写出来只是为了相互学习,要是谁有更好的方法可以交流交流,共同进步。
分享到:
评论

相关推荐

    C++ 贪心算法 删数问题

    ### C++贪心算法解决删数问题 #### 题目背景与要求 该题目属于典型的算法类问题,主要考察的是贪心算法的应用。题目要求从一个给定的正整数`a`中删除`k`个数字(`k ≤ n`),使得剩下的数字按照原来的顺序排列后...

    删数问题(贪心算法)C++实现

    贪心算法在处理删数问题时,通过局部最优选择来逼近全局最优解,简化了问题的求解过程。在C++中,合理利用标准库可以高效地实现这类算法。理解贪心策略和正确实现是解决问题的关键。实际应用中,应结合具体问题进行...

    算法 删数问题

    这个问题是经典的算法问题,涉及到数组操作、排序以及贪心策略。题目要求我们设计一个算法,从给定的n位正整数a中删除k个数字,使得剩余数字组成的数尽可能小。这里的关键在于如何选择要删除的数字。 首先,我们...

    贪心算法

    1. **删数问题** 给定一个高精度正整数,通过删除指定数量的数字,找到使剩余数字组成的数尽可能小的策略。贪心选择在于每次删除当前最大数字,直至满足要求。 2. **游戏策略问题** 在一系列数字中,两玩家轮流...

    贪心算法设计及其实际应用研究

    总的来说,贪心算法是一种有效且直观的解决问题方法,尤其在处理局部最优解能导出全局最优解的问题时。然而,它也有其局限性,不能保证在所有情况下都能找到全局最优解。因此,理解贪心算法的适用范围和局限性,以及...

    贪心算法贪心算法贪心算法

    另一个例子是删数问题,给定一个数和要删除的次数,贪心策略是每次删除当前数值较大的数字,以使得剩余的数尽可能小。例如,对于数175438和删除次数4,删除7、5、4、8会得到最小的数13。 然而,并非所有问题都能...

    删数问题(算法)

    **题目背景**:本问题属于计算机科学中的经典算法题目之一,主要考察学生对于贪心算法的理解与应用能力。题目要求给定一个长度为 n 的正整数 a 和一个整数 k,要求删除该数中的 k 个数字,使得剩余数字按原有顺序...

    java贪心算法实验报告

    ##### 4-11删数问题 - **问题描述**: - 给定一个n位的正整数a,要求删除其中任意k (k ≤ n) 个数字,并保持剩余数字的相对顺序不变,最终得到一个新的正整数。目标是找到一种删除策略,使得新形成的正整数尽可能小...

    删数问题算法程序(排列成一个新的正整数)

    本文探讨的问题是“删数问题算法程序(排列成一个新的正整数)”,该问题要求从一个给定的正整数中删除指定数量的数字,使剩余数字按原有顺序排列形成的新数尽可能小。 **问题描述:** - 给定一个长度为 \( n \)(\...

    算法设计源代码 删数 众数 字典序

    这类问题通常使用贪心算法或动态规划解决,例如,最短处理时间优先法则(SPT规则)就是一个常见的策略。理解这些策略对于优化生产流程、提高工作效率有极大帮助。 此外,压缩包中的其他文件,如“数字统计.docx”...

    活动安排问题,汽车加油问题,删数问题

    上述三个问题分别展示了贪心算法、动态规划和数学思维在解决实际问题中的应用。它们都需要对算法有深入理解,并能够将抽象的数学模型转化为具体的编程实现。通过学习和实践这些问题,可以提升在算法设计和问题解决...

    程序设计基础徐明星w12-20141208-第10章-贪心法-装船-事件-删数.ppt

    【贪心法】是一种在每一步选择中都采取在当前状态下最好或最优(即最有利)的选择,从而希望导致结果是全局最好或最优的算法设计策略。在本讲的“装船问题”中,贪心王小二采取的策略就是贪心法的典型应用。 【装船...

    C++回溯算法实验报告

    总的来说,这个C++实验展示了回溯算法在解决两类问题上的应用,一是利用贪心策略处理具有最优子结构的问题,二是利用深度优先搜索解决非确定性问题。通过实验,学生不仅可以加深对回溯算法的理解,还能提高实际编程...

    delete_number.rar_delete number

    描述中提到的“删数问题”是一个简单的贪心算法,这种算法通常是在每一步选择局部最优解,从而逐步达到全局最优。 贪心算法的基本思想是在每一步选择中都采取在当前状态下最好或最优(即最有利)的选择,从而希望...

    【OI】基本程序题集解题报告

    8. **任务安排**:任务安排问题分两步解决,先用贪心法安排A机器,每次选择完成时间最短的机器处理工作;然后对B机器,可先假设所有机器平等,用类似方法进行匹配,以求得最短时间。 9. **最小差距**:对于奇数个数...

    C++常用算法手册

    贪心算法在每一步选择局部最优解,期望全局也是最优解。如霍夫曼编码、Prim算法构建最小生成树等都是贪心策略的应用。 七、回溯与分支限界 回溯法是一种试探性的解决问题方法,常用于解决组合优化问题,如八皇后...

    基于SpringBoot+SSM+Vue.js+遗传贪心算法的在线组卷系统,管理员,教师角色。

    可以处理多变量、非线性、不连续的问题; 可以找到全局最优解或近似最优解; 简单易行,实现原理清晰。 然而,遗传算法也存在一些缺点: 对于大规模问题,遗传算法的计算复杂度较高; 需要调参,如选择合适的...

Global site tag (gtag.js) - Google Analytics