博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
AKOJ -- 1529 -- 寻找最大数
阅读量:5222 次
发布时间:2019-06-14

本文共 1272 字,大约阅读时间需要 4 分钟。

1529: 寻找最大数

Time Limit: 1 Sec  
Memory Limit: 128 MB
Submit: 107  
Solved: 53

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
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)); }}

转载于:https://www.cnblogs.com/fayne/p/7225220.html

你可能感兴趣的文章
使用arcpy添加grb2数据到镶嵌数据集中
查看>>
[转载] MySQL的四种事务隔离级别
查看>>
QT文件读写
查看>>
C语言小项目-火车票订票系统
查看>>
15.210控制台故障分析(解决问题的思路)
查看>>
BS调用本地应用程序的步骤
查看>>
常用到的多种锁(随时可能修改)
查看>>
用UL标签+CSS实现的柱状图
查看>>
mfc Edit控件属性
查看>>
Linq使用Join/在Razor中两次反射取属性值
查看>>
[Linux]PHP-FPM与NGINX的两种通讯方式
查看>>
Java实现二分查找
查看>>
优秀员工一定要升职吗
查看>>
[LintCode] 462 Total Occurrence of Target
查看>>
springboot---redis缓存的使用
查看>>
架构图-模型
查看>>
sql常见面试题
查看>>
jQuery总结第一天
查看>>
Java -- Swing 组件使用
查看>>
Software--Architecture--DesignPattern IoC, Factory Method, Source Locator
查看>>