zoukankan      html  css  js  c++  java
  • 寻找最大数(三)

    描述

    给出一个整数N,每次可以移动2个相邻数位上的数字,最多移动K次,得到一个新的整数。

    求这个新的整数的最大值是多少。

    输入
    多组测试数据。
    每组测试数据占一行,每行有两个数N和K (1 ≤ N≤ 10^18; 0 ≤ K ≤ 100).
    输出
    每组测试数据的输出占一行,输出移动后得到的新的整数的最大值。
    样例输入
    1990 1
    100 0
    9090000078001234 6
    样例输出
    9190
    100
    9907000008001234
    #include<iostream>
    #include<stdio.h>
    #include<string.h>
    using namespace std;	
    char a[1000];
    int main()
    {
    	int k,i,j,max;
    	while(cin>>a>>k)
    	{
    		int t=strlen(a);
    		max=0;
    		int m=k,b=0;
    		while(k>0)
    		{
    			for(i=b+1;i<t&&m>0;i++)
    			{
    				if(a[i]>a[max])
    					max=i;
    				m--;
    				
    			}
    			for(i=max-1;i>=b;i--)
    			{
    				swap(a[i],a[i+1]);
    				k--;
    			}
    			m=k;
    			b++;
    			max=b;
    			if(b==t)//防止死循环没有跳出while(k>0)这个循环
    			{
    				break;
    			}
    		}
    		cout<<a<<endl;
    	}
    	return 0;
    }


  • 相关阅读:
    010 排序: 冒泡 选择
    洛谷 P1540 机器翻译
    洛谷 P1011 车站
    周期串
    2019.03.29 大数据图解
    2019.03.29 算法解读
    2019.03.28 博客反省
    2019.03.27 常用的模块
    2019.03.25 git
    2019.03.25 Ajax三级联动
  • 原文地址:https://www.cnblogs.com/NYNU-ACM/p/4237309.html
Copyright © 2011-2022 走看看