HDU 4550卡片遊戲(貪心)
卡片遊戲
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。遊戲的目標是使這個數最小。
現在你的任務是幫小明寫段程式,求出這個最小數。
首先取最上方的卡片放到桌子上,然後每次取最上方的卡片,放到桌子上已有卡片序列的最右邊或者最左邊。當N張卡片全部都放到桌子上後,桌子上的N張卡片構成了一個數。這個數不能有前導0,也就是說最左邊的卡片上的數字不能是0。遊戲的目標是使這個數最小。
現在你的任務是幫小明寫段程式,求出這個最小數。
Input
第一行是一個數T,表示有T組測試資料;
然後下面有T行, 每行是一個只含有0~9的字串,表示N張疊在一起的卡片,最左邊的數字表示最上方的卡片。
[Technical Specification]
T<=1000
1 <= N <= 100
然後下面有T行, 每行是一個只含有0~9的字串,表示N張疊在一起的卡片,最左邊的數字表示最上方的卡片。
[Technical Specification]
T<=1000
1 <= N <= 100
Output
對於每組測試資料,請在一行內輸出能得到的最小數。
Sample Input
3
565
9876543210
9876105432
Sample Output
556
1234567890
1678905432
題目大意:給你一排有序的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也做了。
相關文章
- HDU 5821 Ball(貪心)
- HDU 6047 Maximum Sequence (貪心)
- HDU 5813 Elegant Construction (貪心)Struct
- HDU 6299-Balanced Sequence(貪心)
- hdu--4435--charge-station+貪心
- 貪心——55. 跳躍遊戲 && 45.跳躍遊戲II遊戲
- LeetCode 55. 跳躍遊戲 ( 回溯 dp 貪心LeetCode遊戲
- HDU6301 Distinct Values (多校第一場1004) (貪心)
- leetcode:跳躍遊戲II(java貪心演算法)LeetCode遊戲Java演算法
- 貪心
- uva10935卡片遊戲遊戲
- 貪心-國王的遊戲(大數乘除)、連線子串遊戲
- 反悔貪心
- Supermarket(貪心)
- 貪心例題
- 貪心+搜尋
- Python:遊戲:貪吃蛇Python遊戲
- leetcode - 1686 - 石子游戲 VI - 貪心 - 數學分析LeetCode
- BZOJ5177 : [Jsoi2013]貪心的導遊JS
- 用 JavaScript 寫一個卡片小遊戲JavaScript遊戲
- 貪心模式記錄模式
- 反悔貪心雜題
- 貪心演算法演算法
- 貪心、構造合集
- [譯] RxJS 遊戲之貪吃蛇JS遊戲
- 貪心-刪數問題
- 貪心-*活動選擇
- 24/03/20 貪心(一)
- 漲薪【貪心】【快速冪】
- Leetcode 貪心:差值調整LeetCode
- Least Cost Bracket Sequence(貪心)ASTRacket
- 刪數問題(貪心)
- 「貪心」做題記錄
- [反悔貪心] Add One 2
- 貪心 做題筆記筆記
- 7.5 - 貪心篇完結
- 貪心演算法Dijkstra演算法
- 牛客 tokitsukaze and Soldier 貪心
- bzoj5177: [Jsoi2013]貪心的導遊(主席樹)JS