zoukankan      html  css  js  c++  java
  • codeforces 435B

    题意:只能对相邻的两个数字进行交换,允许k次交换,输出交换能得到的最大的数。从最高位开始寻找最优,每次寻找能交换的步数里交换到的最大值进行交换。

    #include<cstdio>
    #include<cstring>
    #include<iostream>
    using namespace std;
    char num[30];
    int main() {
        int k;
        scanf("%s%d",num,&k);
        int len=strlen(num);
        for(int i=0;i<len;i++) {
            if(num[i]<'9') {
                char temp=num[i];
                int flag=i;
                for(int j=i+1;j<len && j<=i+k;j++) { //找出num[i+1]~num[i+k]中最大的 
                    if(num[j]>temp) {
                        temp=num[j];
                        flag=j;
                    }
                }
                if(flag!=i) {
                    for(int j=flag-1;j>=i;j--) swap(num[j+1],num[j]);
              k
    -=flag-i; } } } for(int i=0;i<len;i++) printf("%c",num[i]); printf(" "); return 0; }
  • 相关阅读:
    ubuntu安装netcat
    护网工作
    ssrf绕过
    文件包含绕过
    thinkphp5.0.23
    xxe
    文件上传
    文件上传html xss
    获取网站title
    RobotFramework使用AutoItLibrary输入字符错误问题
  • 原文地址:https://www.cnblogs.com/LinesYao/p/5709087.html
Copyright © 2011-2022 走看看