最优决策问题

删除中的最值问题

(1)整数删数字后的最小数:请在整数n = 83179254297017652删除9个数,使得余下的数字按照原次序组成最小的的新数。

设计要点:在整数n中删除s个数字后余下的数字按原来的次序组成一个新的正整数m对给定的n,s寻找一种方案使得组成的数字最小,操作数据可以是高精度数据,在这里采用字符串的输入方式,每次删除一个数字之后,选择一个使剩下的数,最小的数作为删除对象之所以选择这样的贪心的操作,是因为删除s个数字全局最优解包含删除一个数字子问题的最优解。
当s  = 1时在n中删除那个数字能达到最小的目的?从左向右每相邻的两个数字比较,若出现左边大于右边删除左边的大数字,若不是即所有的数字全部相同或者升序,删除右边的数字。当s>1时(同时也小于n)按照上述的操作一个一个的删除,删除一个达到最小后,再从串首开始同上逐个数字比较删除第2个,依次分解为s次操作完成。若删除的不到s个就出现没有左边的数字大于右边的数字,就停止操作,打印剩下串的左边的n.length-s个数字Java代码实现:

package demo1;

import java.util.Scanner;

public class Main {

    /**
     * 删除中的最值问题
     * @param args
     */

    public static void main(String[] args) {

        Scanner input = new Scanner(System.in);
        String str = input.next();
        char[]c = str.toCharArray();
        int s = input.nextInt();
        System.out.println("输入先后删除的元素:");
        int x = 0;
        int t=0;
        int i=0;
        while(s>x&&t==0)
        {

            //出现递减删除递减的首个字符
            if(c[i] > c[i+1])
            {
                System.out.print(c[i]+" " );
                for(int k = i;k<=c.length-2-x;k++)

                    //删除一个数字后面的数字前移
                    c[k] = c[k+1];

                x++;//x统计的是删除的数字的个数
                i = -1;//从头开始查找递减区间

            }
            //若以无递减区间t==1
            if(i == c.length-x-2)
            {
                t = 1;
            }

            i++;

        }
        System.out.println();
        //打印得到的最小的数
        for(int j=0;j<=c.length-1-s;j++)
        {
            System.out.print(c[j]+"  ");
        }

    }

}

运行结果:

83179254297017652
9
输入先后删除的元素:
8 3 9 7 5 4 9 7 2
1 2 0 1 7 6 5 2

时间: 2024-09-14 10:38:19

最优决策问题的相关文章

模拟53 题解

A. u 一眼差分,在斜线上加一减一. 然后发现这样的复杂度是$O(nq)$的,似乎不是很好过. 然后发现打差分标记的形式也是连续的,所以差分两次就完了. B. v 最优决策问题,一般倒着转移,$O(n*2^n)$的dp是显然的. 考试时一直在想能否改成三进制状压,只压15位状态,表示距离边界距离为i有多少个白球. 然后发现没有办法确定某个状态会转移到谁,于是打了全部部分分. 其实仔细想想就可以发现,状态数不会很多. 对于剩余球比较多的情况,状态数不会超过$C_n^i$, 对于剩余球比较少的情况

JVM原理讲解和调优

一.什么是JVM JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的. Java语言的一个非常重要的特点就是与平台的无关性.而使用Java虚拟机是实现这一特点的关键.一般的高级语言如果要在不同的平台上运行,至少需要编译成不同的目标代码.而引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译.Java语言使用Java虚拟机屏蔽了与具体平台相关的信息

爱奇艺、优酷、腾讯视频竞品分析报告2016(一)

1 背景 1.1 行业背景 1.1.1 移动端网民规模过半,使用时长份额超PC端 2016年1月22日,中国互联网络信息中心 (CNNIC)发布第37次<中国互联网络发展状况统计报告>,报告显示,网民的上网设备正在向手机端集中,手机成为拉动网民规模增长的主要因素.截至2015年12月,我国手机网民规模达6.20亿,有90.1%的网民通过手机上网. 图 1  2013Q1~2015Q3在线视频移动端和PC端有效使用时长份额对比 根据艾瑞网民行为监测系统iUserTracker及mUserTrac

WordPress解决优酷、土豆视频移动端观看问题并自适应

转:https://www.xhsay.com/wp-iframe-handler-youku-tudou.html 虽然WordPress能直接插入优酷.土豆的视频但是无法在移动端观看,于是乎笨笨就开始各种折腾终于找到了合适的解决办法另外在说一句支持移动端自适应哦. 函数代码 在主题函数文件function.php里面添加以下代码即可,保证在最后一个?>之前就好了 //Youku function wp_iframe_handler_youku($matches, $attr, $url, $

spark性能调优之资源调优

转https://tech.meituan.com/spark-tuning-basic.html spark作业原理 使用spark-submit提交一个Spark作业之后,这个作业就会启动一个对应的Driver进程.根据你使用的部署模式(deploy-mode)不同,Driver进程可能在本地启动,也可能在集群中某个工作节点上启动.Driver进程本身会根据我们设置的参数,占有一定数量的内存和CPU core.而Driver进程要做的第一件事情,就是向集群管理器(可以是Spark Stand

mysql性能调优与架构设计笔记

1.mysql基本介绍 mysql支持多线程高并发的关系型数据库; 数据库存储引擎InnoDB.MyISAM; mysql快速崛起的原因就是他是开源的; 性能一直是mysql自豪的一大特点; 2.mysql架构组成 麻雀虽小五脏俱全,mysql虽然简单但其内部结构并不简单; mysql物理文件组成之日志文件: 错误日志error log这里记录mysql运行时严重的警告和错误,以及mysql启动和关闭的日志信息 二进制日志 binary log 记录mysql运行时所有的query和query执

网络调优

关于网络调优,尤其是TCP Tuning(你可以以这两个关键词在网上找到很多文章),这里面有很多很多东西可以说.看看Linux下TCP/IP的那么多参数就知道了(顺便说一下,你也许不喜欢Linux,但是你不能否认Linux给我们了很多可以进行内核调优的权力).强烈建议大家看看<TCP/IP详解卷1:协议>这本书.我在这里只讲一些概念上的东西. A)TCP调优 我们知道TCP链接是有很多开销的,一个是会占用文件描述符,另一个是会开缓存,一般来说一个系统可以支持的TCP链接数是有限的,我们需要清楚

【Spark深入学习 -14】Spark应用经验与程序调优

----本节内容------- 1.遗留问题解答 2.Spark调优初体验 2.1 利用WebUI分析程序瓶颈 2.2 设置合适的资源 2.3 调整任务的并发度 2.4 修改存储格式 3.Spark调优经验 3.1 Spark原理及调优工具 3.2 运行环境优化 3.2.1 防止不必要的分发 3.2.2 提高数据本地性 3.2.3 存储格式选择 3.2.4 选择高配机器 3.3 优化操作符 3.3.1 过滤操作导致多小任务 3.3.2 降低单条记录开销 3.3.3 处理数据倾斜或者任务倾斜 3.

腾讯优图及知脸(ZKface)人脸比对接口测试(python)

一.腾讯优图 1.开发者地址:http://open.youtu.qq.com/welcome/developer 2.接入流程:按照开发者页面的接入流程接入之后,创建应用即可获得所需的AppID.SecretID和SecretKey这是进行接口调用必须的凭证 3.测试流程: 3.1.测试可以直接调用网络接口,或者下载相应语言的sdk(http://open.youtu.qq.com/welcome/developer#/tool-sdk),我采用的是下载python版本的sdk(该sdk对应的