NYOJ 1057 寻找最大数(三)
2016-06-01 16:48
239 查看
题目1057
题目信息
运行结果
本题排行
讨论区
时间限制:1000 ms | 内存限制:65535 KB
难度:2
描述
给出一个整数N,每次可以移动2个相邻数位上的数字,最多移动K次,得到一个新的整数。
求这个新的整数的最大值是多少。
输入多组测试数据。
每组测试数据占一行,每行有两个数N和K (1 ≤ N≤ 10^18; 0 ≤ K ≤ 100).
输出每组测试数据的输出占一行,输出移动后得到的新的整数的最大值。
样例输入
样例输出
题目信息
运行结果
本题排行
讨论区
寻找最大数(三)
时间限制:1000 ms | 内存限制:65535 KB难度:2
描述
给出一个整数N,每次可以移动2个相邻数位上的数字,最多移动K次,得到一个新的整数。
求这个新的整数的最大值是多少。
输入多组测试数据。
每组测试数据占一行,每行有两个数N和K (1 ≤ N≤ 10^18; 0 ≤ K ≤ 100).
输出每组测试数据的输出占一行,输出移动后得到的新的整数的最大值。
样例输入
1990 1 100 0 9090000078001234 6
样例输出
9190 100 9907000008001234
#include <cstdio> #include <cstring> #include <algorithm> using namespace std; const int maxn = 100 + 10; char str[20]; int k; int main() { while (scanf("%s%d", str, &k) != EOF){ int len = strlen(str); int t; for (int i = 0; i < len && k != 0; i++){ t = i; for (int j = i + 1; j <= i + k && j < len; j++){ //贪心,从i+1到i+k寻找最大的数 并记录下序号 if (str[j] > str[t]) t = j; } for (int j = t; j > i; j--){ swap(str[j], str[j - 1]); } k -= t - i; } printf("%s\n", str); } return 0; }
相关文章推荐
- 【马仔创业记】一只猴子的创业独白(5)心理咨询行业痛点分析
- 一步一步学EF系列 【7、结合IOC ,Repository,UnitOfWork来完成框架的搭建】
- Beta 版软件如何成功发布App
- android 6.0 sd卡读取文件失败
- ZooKeeper 基本API使用
- oracle表分区详解
- mybatis入门之一个简单的mybatis例子(根据id查数据)
- 毛玻璃效果就是这么唯美
- 22.使用MAT对Dump文件进行分析实战
- 解决Android SDK下载慢,国内Google被墙问题 AndroidSDK镜像源 下载
- 第二阶段工作总结06
- 字典转模型简单介绍
- Hibernate:No row with the given identifier exists
- HDU-5701-中位数计数
- 学习中的困惑
- python中获得两个数组的交集、并集、差集
- 删除网络上下载的PPT模板水印
- 使用gulp构建一个项目
- dom4j操作带冒号的xml
- Java的几种内部类