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

    http://acm.nyist.net/JudgeOnline/problem.php?pid=1057

    寻找最大数(三)

    时间限制: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 <stdio.h>
    #include <string.h>

    char str[20], temp;

    int main(){
        int k, len, i, flag1, flag2;
        while(scanf("%s %d", str, &k) != EOF){
            len = strlen(str);
            flag1 = flag2 = 0;
            while(k > 0){
                if(flag1 == len){   //忘了这个TLE到死
                    break;
                }
                for(i = flag1; i <= flag1 + k && i < len; i++){
                    if(str[i] > str[flag2]){
                        flag2 = i;
                    }
                }
                if(flag2 > flag1){
                    k -= (flag2 - flag1);
                    for(i = flag2; i > flag1; i--){
                        temp = str[i];
                        str[i] = str[i - 1];
                        str[i - 1] = temp;
                    }
                }
                flag1++;
                flag2 = flag1;
            }
            puts(str);
        }
        return 0;

    } 

  • 相关阅读:
    讯飞语音合成 简单使用
    android UI 操作 不要在子线程中操作UI
    把信送给加西亚
    android 二维码 扫描,生成,竖屏
    Android App签名(为apk签名)
    android 蓝牙 通信 bluetooth
    Android 蓝牙开发基本流程
    Android 使用 Application 简单介绍
    几个比较特殊的目录
    FHS目录配置下,常见的几个问题及解答
  • 原文地址:https://www.cnblogs.com/angle-qqs/p/4085016.html
Copyright © 2011-2022 走看看