//解法1:每次找k+1个数中的最小值
#include<bits/stdc++.h>
using namespace std;
#define N 15
int main()
{
    int k, t; 
    char s[N], a[N];
    cin >> t;
    while(t--)
    {
        cin >> s >> k;
        int an = 0, len = strlen(s), i = 0;
        while(i < len)
        {
            if(k == len-i)//如果剩下的元素个数只有k个,那么都删掉 
                break;
            int mi = i;//求i~i+k的最小值下标 
            for(int j = i; j <= i+k; ++j)
            {
                if(s[j] < s[mi])
                    mi = j;
            }
            a[++an] = s[mi];
            k -= mi - i;//s[i]~s[mi-1]都删掉,删掉了mi-i个元素
            i = mi + 1;
        }    
        for(i = 1; i <= an; ++i)
            cout << a[i];
        cout << endl;
    }
    return 0;
}

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐