zoukankan      html  css  js  c++  java
  • XidianOJ 1123 K=1 Problem of Orz Pandas

    题目描述

    One panda named orz is playing a interesting game, he gets a big integer Num and an integer K. In this game, he can exchange two single numbers in Num. For example, he can get 1243 from 3241 by exchange 1 and 3.But orz can exchange at most K times. So what’s the biggest number after at most K times operations?

    However, a VIP (Very Important Panda) of ACM/OPPC (Orz Panda Programming Contest) comittee thought this problem was too hard for Orz Pandas. So he simplified this problem with constraint K=1. Your task is to solve the simplified problem.

    输入

    Multiple cases. For each case:
    The first line is an integer Num. 0 ≤ Num ≤ 10
    1000, and it is guaranteed that Num is a legal integer and doesn’t contain any leading zero

    输出

    For each test case, print the biggest number after at most 1 times operation in a line.

    --正文
    字符串读取数,贪心找可能的数进行交换
    #include <iostream>
    #include <cstring>
    #include <cstdio>
    #include <algorithm>
    using namespace std;
    char num[1001];
    
    int findMax(char* num){
        int len = strlen(num);
        int max = -1,maxi;
        int i;
        for (i=0;i<len;i++){
            if (num[i] - '0' >= max) {
                max = num[i] - '0';
                maxi = i;
            }
        }
        return maxi;
    }
    
    int main(){
        while (scanf("%s",num) != EOF){
            char* begin = num;
            int len = strlen(num);
            int total = 0;
            bool over = false;
            while (!over){
                int maxi = findMax(&num[total]) + total;
                int now = total;
                while (num[now] == num[maxi] && now < maxi) now++;
                if (now == maxi) {
                    total = maxi+1;
                    if (num[total] == '') break;
                    continue;
                }
                else {
                    char temp = num[now];
                    num[now] = num[maxi];
                    num[maxi] = temp;
                    break;
                }
            }
            printf("%s
    ",begin);
        }
        return 0;
    }
  • 相关阅读:
    Castle实践1-Castle IOC容器剖析
    Castle实践-开篇
    界面逻辑和业务逻辑分离的重要性
    Castle实践4-Automatic Transaction Management Facility
    Castle实践2-Startable Facility
    世事无常....
    手动配置oracle客户端的方法
    Excel.Application 和 打印机 :)
    流水如斯...
    SourceControl
  • 原文地址:https://www.cnblogs.com/ToTOrz/p/6135347.html
Copyright © 2011-2022 走看看