简单贪心....
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> using namespace std; char str[200]; int nt; int main() { long long int a; int k; cin>>a>>k; while(a) { str[nt++]=a%(10LL)+'0'; a/=10LL; } for(int i=nt-1;i>=0&&k;i--) { int mark=-1,dist=-1; for(int j=i;j>=max(0,i-k);j--) { if(str[j]>str[mark]) { mark=j; dist=i-j; } } k-=dist; for(int j=mark;j<i;j++) { swap(str[j],str[j+1]); } } for(int i=nt-1;i>=0;i--) { cout<<str[i]; } cout<<endl; return 0; }