1529: 寻找最大数

Time Limit: 1 Sec  Memory Limit: 128 MB

Submit: 107  Solved: 53

上一题SubmitStatus标签打分编辑题目信息编辑测试数据下一题

Description

给出一个整数n每次可以移动相邻数位上的数字,最多移动k次,得到一个新的整数,求这个新的整数的最大值是多少。

Input

多组测试数据。

每组测试数据占一行,每行有两个数N和K (1 ≤ N≤ 10^100; 0 ≤ K ≤ 100).

Output

每组测试数据的输出占一行,输出移动后得到的新的整数的最大值。

Sample Input

1990 1
100 0
9090000078001234 6

Sample Output

9190
100
9907000008001234

HINT

Source

/*

这道题主要是用到贪心算法,还是比较好理解

一个字符串a[n], 从a[0]开始,到a[n-1]依次与后面的进行替换

贪心规则:每次需要与后面的length-i个元素相比较,找到最大的替换到i的位置

算法:每次从头开始,以一个位置为起点,在可移动步数内找一个最大值,然后移动到起点 ,可移动步数减去当前移动步数。如果还可移动在从头开始找。

*/

import java.util.Scanner;

/**
* Created by fan on 17-6-30.
*/
public class P1529 {
public static void main(String[] args) {
Scanner cin = new Scanner(System.in);
while (cin.hasNext()) {
String n = cin.next();
int k = cin.nextInt();
solve(n, k);
}
cin.close();
} private static void solve(String s, int k) {
char a[] = s.toCharArray();
for (int i=0; i<a.length-1 && k!=0; i++) {
char maxc = a[i]; //maxc 存储a[i]后的最大元素
int maxi = i; //maxi 存储a[i]后的最大元素的下标
for (int j=i+1; j<=k+i && j<a.length; j++) { //for 用于查找a[i]后的最大元素(k步以内最大元素)
if (maxc < a[j]) {
maxc = a[j];
maxi = j;
}
}
for (int j=maxi; j>i; j--) { //找到最大元素就依次交换
char t = a[j];
a[j] = a[j-1];
a[j-1] = t;
}
k = k - (maxi - i); // 更新现在的可移动步数
//..如果还有步数则继续,从第二个元素开始继续进行贪心
}
System.out.println(new String(a));
}
}

AKOJ -- 1529 -- 寻找最大数的更多相关文章

  1. nyoj 448 寻找最大数(贪心专题)

    寻找最大数 时间限制:1000 ms  |  内存限制:65535 KB 难度:2   描述 请在整数 n 中删除m个数字, 使得余下的数字按原次序组成的新数最大, 比如当n=920813467185 ...

  2. ACM 寻找最大数

    寻找最大数 时间限制:1000 ms  |  内存限制:65535 KB 难度:2   描述 请在整数 n 中删除m个数字, 使得余下的数字按原次序组成的新数最大, 比如当n=920813467185 ...

  3. nyoj 448 寻找最大数

    寻找最大数 时间限制:1000 ms  |  内存限制:65535 KB 难度:2   描述 请在整数 n 中删除m个数字, 使得余下的数字按原次序组成的新数最大, 比如当n=920813467185 ...

  4. 寻找最大数--nyoj题目448

    寻找最大数 时间限制:1000 ms  |  内存限制:65535 KB 难度:2   描述 请在整数 n 中删除m个数字, 使得余下的数字按原次序组成的新数最大, 比如当n=920813467185 ...

  5. NYOJ-1057 寻找最大数(三)(贪心)

    寻找最大数(三) 时间限制:1000 ms  |  内存限制:65535 KB 难度:2   描述 给出一个整数N,每次可以移动2个相邻数位上的数字,最多移动K次,得到一个新的整数. 求这个新的整数的 ...

  6. NYOJ-448 寻找最大数(贪心)

    NYOJ-448 寻找最大数 时间限制:1000 ms  |  内存限制:65535 KB 难度:2   描述 请在整数 n 中删除m个数字, 使得余下的数字按原次序组成的新数最大, 比如当n=920 ...

  7. nyoj 寻找最大数(二)

    寻找最大数(二) 时间限制:1000 ms  |  内存限制:65535 KB 难度:2   描述 给你一个数字n(可能有前缀0). 要求从高位到低位,进行 进栈出栈 操作,是最后输出的结果最大.   ...

  8. nyoj 寻找最大数

    寻找最大数 时间限制:1000 ms  |  内存限制:65535 KB 难度:2   描述 请在整数 n 中删除m个数字, 使得余下的数字按原次序组成的新数最大, 比如当n=920813467185 ...

  9. NYOJ448寻找最大数,贪心~~

    寻找最大数 时间限制:1000 ms  |  内存限制:65535 KB 难度:2 描述 请在整数 n 中删除m个数字, 使得余下的数字按原次序组成的新数最大, 比如当n=92081346718538 ...

随机推荐

  1. 我的IT开源之路

    我开通博客这么久也从没有写过什么,那时只是喜欢看别人的技术博客,然后转发到我的私人空间有空时候读一读.这几年下来,我关注了有几百个博客.公众号.头条号.新浪微博等等,里面有无数的好文章.但是,一直也没 ...

  2. Chapter 4. The MPEG-4 and H.264 Standards

    本章节介绍一些关于MPEG-4标准与H.264标准的基本知识 比较重要的是第95页关于两种标准的对比表格.其他部分没有什么特别重要的细节.

  3. 关闭chrome浏览器的developer tools

    背景 Chrome使用过程中,很容易启动Chrome developer tools,一些误触如按到F12.CTRL+Shift+C等都会启动developer tools.对于不开发Web的人来说, ...

  4. APP测试相关点归纳

    APP测试相关点归纳   1.1测试周期 测试周期可按项目的开发周期来确定测试时间,一般测试时间为一两周,根据项目情况以及版本质量可适当缩短或延长测试时间.正式测试前需确认项目排期. 1.2测试资源 ...

  5. MQ队列管理

    分享一段代码,很实用. 下面这段java代码是我在国外一个论坛上发现的,源地址已经忘了.代码的作用是可以删除正在使用的mq的队列消息,管理mq的人一定知道它的美妙了吧,哈哈. 我拿来改了下,增加了2个 ...

  6. 了解Java基础原理

    Java 是1995年SUN公司推出的一门高级编程语言,是面向互联网的语言,WEB应用程序首选的语言(安卓底层,大数据hadoop框架用java编写,Spark用Scala编写,Scala用java写 ...

  7. 首页音乐播放器添加"多首音乐"

    添加音乐播放器可以去这个博主的网址参考学习 原文链接:http://www.cnblogs.com/RhinoC/p/4695509.html 以下是针对添加“多首音乐”的详细过程: (注:由于之前并 ...

  8. hdu_1564: Play a game

    题目链接 看n的奇偶性,题解参见kuangbin的博客 http://www.cnblogs.com/kuangbin/archive/2013/07/22/3204654.html #include ...

  9. jenkins外网slave配置

    背景: 客户提供了测试服务器,但不能外网直连需要通过windows跳板进行进行连接. 方案设定将windows跳板机配置为远程slave节点. 技术支持: jenkins-slave  windows ...

  10. Certificates does not conform to algorithm constraints

    今天在开发时遇到一个新问题:Certificates does not conform to algorithm constraints,在此记录一下解决方案. 问题详情: [ERROR] Faile ...