构造(FZU 2111,Min Number)

来源:互联网 发布:古装剧知乎 编辑:程序博客网 时间:2024/06/05 02:38

数据很水,我有问题的代码交了都能过。

但是依然可能卡人,如果你出现了手误。


O(10n)

#include<cstdio>#include<string.h>#include<algorithm>using namespace std;const int maxn = 1010;char str[maxn];int len;int M;int k;bool change(){    int kk=k;    while(k<len)    {        for(int i=k+1;i<len;i++)            if((k&&str[i]<=str[kk])||(!k&&str[i]!='0'&&str[i]<=str[kk])) kk=i;        if(str[kk]==str[k])        {            kk=k;            if(k==0) kk++;            else while(kk<len&&str[kk]<=str[k]) kk++;            k=kk;            continue;        }        swap(str[k],str[kk]);        return true;    }    return false;}void solve(){    k=0;    scanf("%s %d",str,&M);    len=strlen(str);    while(M--&&change());    printf("%s\n",str);}int main(){    int T;    scanf("%d",&T);    while(T--) solve();    return 0;}


0 0