FZU Problem 2111 Min Number

來源:互聯網
上載者:User
#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int main(){    //freopen("in.txt","r",stdin);    int cas,time,num;    char str[1100],ss[1100];    scanf("%d",&cas);    while(cas--)    {        scanf("%s %d",str,&time);        if(time==0)        {            printf("%s\n",str);            continue;        }        strcpy(ss,str);        sort(ss,ss+strlen(ss));        int i;        for(i=0; ss[i]!='\0'&&ss[i]=='0'; i++);        ss[0]=ss[i];        ss[i]='0';        char min='9';        int index=0;        for( i=0; str[i]!='\0'; i++)        {            if(str[i]=='0') continue;            if(str[i]<min)            {                min=str[i];                index=i;            }        }        char temp;        if(str[index]!=str[0])        {            time--;            temp=str[0];            str[0]=str[index];            str[index]=temp;        }        if(strcmp(str,ss)==0)        {            printf("%s\n",ss);            continue;        }        int flag=0;        num=1;        while(time--)        {            min='9';            index=num;            for(int j=num; str[j]!='\0'; j++)            {                if(str[j]<min)                {                    min=str[j];                    index=j;                }            }            if(index==num)            {                time++;                num++;                continue;            }            temp=str[num];            str[num]=min;            str[index]=temp;            if(strcmp(str,ss)==0)            {                printf("%s\n",ss);                flag=1;                break;            }        }        if(flag==0)            printf("%s\n",str);    }    return 0;}

              用兩個數組存輸入的一串數字,給ss排序,為避免ss[0]出現0,判斷一下,如果是0就讓它和第一個不是0的數位交換。然後一次次交換,有點類似於冒泡排序的慢動作,把最小的往前挪,每交換一次之後,檢查是否已經是最小的了,如果是直接輸出就可以了。注意第一次交換時還是不可以把0放到str[0]。另外只有真正有交換動作時time才會減1。

                             “高教社杯”第三屆福建省大學生程式設計競賽

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.