HDU 4550卡片遊戲(貪心)

來源:互聯網
上載者:User
卡片遊戲

Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)
Total Submission(s): 841    Accepted Submission(s): 263


Problem Description  小明最近宅在家裡無聊,於是他發明了一種有趣的遊戲,遊戲道具是N張疊在一起的卡片,每張卡片上都有一個數字,數位範圍是0~9,遊戲規則如下:
  首先取最上方的卡片放到桌子上,然後每次取最上方的卡片,放到桌子上已有卡片序列的最右邊或者最左邊。當N張卡片全部都放到桌子上後,桌子上的N張卡片構成了一個數。這個數不能有前置0,也就是說最左邊的卡片上的數字不能是0。遊戲的目標是使這個數最小。
  現在你的任務是幫小明寫段程式,求出這個最小數。 


Input第一行是一個數T,表示有T組測試資料;
然後下面有T行, 每行是一個只含有0~9的字串,表示N張疊在一起的卡片,最左邊的數字表示最上方的卡片。

[Technical Specification]
T<=1000
1 <= N <= 100 


Output對於每組測試資料,請在一行內輸出能得到的最小數。 


Sample Input

356598765432109876105432
 


Sample Output

55612345678901678905432
                     題目大意:給你一排有序的0~9的數,一次把他們擺在桌子上,每次擺的數要麼在這行數的最左邊要麼就在最右邊。問你可以組成最小的數。當然0不可以當先導。開始不懂得如何貪心。然後就按位的依次取出來,不過遇到0了不確定是不是把它放在前面,有可能後面的有1或者什麼的。思路比較混亂然後就直接WA了。後來居然超蛋的想把0~9的個數直接統計輸出,準備寫的時候發現顛覆了題目的意思,只能放最左最右。
             解題思路:主要是貪心,需要把最小的不為0且最靠後的那個值找到,只能把它當成最後結果的第一位,這樣才最小。自己可以細細地品味下。然後index前面的就按開始那種判斷就可以了,index後面的就直接輸出嘍,只能排在後面。具體思路見代碼。
             題目地址:卡片遊戲
AC代碼:
#include<iostream>#include<cstring>#include<string>#include<cstdio>using namespace std;char a[102];char tmp[2];string res;int main(){    int tes,i,len,index;    scanf("%d",&tes);    while(tes--)    {        char p='9';  //初始化        scanf("%s",a);        res="";   //初始化        len=strlen(a);        for(i=0;i<len;i++)  //知道index        {            if(a[i]!='0'&&a[i]<=p)            {                p=a[i];                index=i;            }        }        tmp[0]=a[0],tmp[1]='\0';        res=res+tmp;        for(i=1;i<index;i++)  //前面的需要判斷是不是比第一位大        {            tmp[0]=a[i],tmp[1]='\0';            if(a[i]<=res[0]) res=tmp+res;            else res=res+tmp;        }        if(index>0)        {            tmp[0]=a[index],tmp[1]='\0';  //index            res=tmp+res;        }        for(i=index+1;i<len;i++)  //後面的直接只能插在後面        {            tmp[0]=a[i],tmp[1]='\0';            res=res+tmp;        }        cout<<res<<endl;    }    return 0;}

  這幾道題都是2013金山西山居創意遊戲程式挑戰賽——初賽(2)的三道題目,沒想到shiyuankongbu也做了。


            

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.