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

    [提交][状态][讨论版]

    题目描述

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

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

    输入

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

    输出

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

    样例输入

    1990 1
    100 0
    9090000078001234 6

    样例输出

    9190
    100
    9907000008001234
     1 #include<stdio.h>
     2 #include<string.h>
     3 
     4 #define MAX 20
     5 
     6 int main(void) {
     7     char num[MAX];
     8     int k;
     9     while(scanf("%s %d",num, &k)!=EOF) {
    10         int i, j;
    11         int len = strlen(num);
    12         char temp;//temp:临时
    13         int flag;//flag:信号
    14         int mark;//mark:标记
    15         for(i = 0; i < len; i ++) {
    16             temp = num[i];
    17             flag = 1;
    18             for(j = i + 1; j <= i + k && j < len; j++) {//在k范围内的最大数,并记录其下标。用以下面for循坏的次数
    19                 if(num[j] > temp) {
    20                     temp = num[j];
    21                     mark = j;//记录范围内最大值的下标
    22                     flag = 0;
    23                 }
    24             }
    25             if(!flag) {
    26                 for(int s = mark; s > i; s --) {
    27                     temp = num[s];
    28                     num[s] = num[s - 1];
    29                     num[s - 1] = temp;
    30                 }
    31                 k = k -(mark - i);//mark - i即为k要减少的数
    32             }
    33             if(k == 0) {//移动结束条件
    34                 break;
    35             }
    36         }
    37         puts(num);
    38     }
    39     return 0;
    40 }
    View Code
  • 相关阅读:
    关于类的继承与初始化顺序
    大数据协作框架
    关于委托和线程
    Hive高级
    聚集索引和非聚集索引
    Hadoop生态优秀文章集锦
    hive深入使用
    hive常规配置及常用命令使用
    HBase核心技术点
    zipkin环境搭建
  • 原文地址:https://www.cnblogs.com/tong69/p/5796586.html
Copyright © 2011-2022 走看看