zoukankan      html  css  js  c++  java
  • CSUOJ 1270 Swap Digits

    Description

    Now we have a number, you can swap any two adjacent digits of it, but you can not swap more than K times. Then, what is the largest probable number that we can get after your swapping?

    Input

    There is an integer T (1 <= T <= 200) in the first line, means there are T test cases in total.

    For each test case, there is an integer K (0 <= K < 106) in the first line, which has the same meaning as above. And the number is in the next line. It has at most 1000 digits, and will not start with 0.

    There are at most 10 test cases that satisfy the number of digits is larger than 100.

    Output

    For each test case, you should print the largest probable number that we can get after your swapping.

    Sample Input

    3
    2
    1234
    4
    1234
    1
    4321

    Sample Output

    3124
    4213
    4321

    Hint

    暴力
    #include<stdio.h>
    #include<string>
    #include<string.h>
    #include<algorithm>
    #include<iostream>
    typedef long long ll;
    using namespace std;
    int T, s, len;
    char ch[1010];
    int main()
    {	
    	cin >> T;
    	while (T--)
    	{
    		cin >> s >> ch;
    		len = strlen(ch);
    		for (int i = 0; i < len; i++)
    		{
    			if (s <= 0)break;
    			char max = '0';
    			int key;
    			for (int j = i + 1; j < len && j <= i + s; j++)//找到能移动的最大位数
    			{
    				if (max < ch[j])
    				{
    					max = ch[j];
    					key = j;
    				}
    			}
    			if (max > ch[i])
    			{
    				for (int j = key; j > i; j--)
    					ch[j] = ch[j - 1];
    				ch[i] = max, s =s-( key - i);
    			}
    		}
    		cout << ch << endl;
    	}
    	return 0;
    }
    /**********************************************************************
    	Problem: 1270
    	User: leo6033
    	Language: C++
    	Result: AC
    	Time:12 ms
    	Memory:2024 kb
    **********************************************************************/
    

  • 相关阅读:
    URAL 2067 Friends and Berries (推理,数学)
    URAL 2070 Interesting Numbers (找规律)
    URAL 2073 Log Files (模拟)
    URAL 2069 Hard Rock (最短路)
    URAL 2068 Game of Nuts (博弈)
    URAL 2066 Simple Expression (水题,暴力)
    URAL 2065 Different Sums (找规律)
    UVa 1640 The Counting Problem (数学,区间计数)
    UVa 1630 Folding (区间DP)
    UVa 1629 Cake slicing (记忆化搜索)
  • 原文地址:https://www.cnblogs.com/csu-lmw/p/9124443.html
Copyright © 2011-2022 走看看