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 5813 Elegant Construction (貪心)Struct
- hdu4268 multiset應用 貪心
- hdu5380 貪心+雙端佇列佇列
- hdu 3177Crixalis's Equipment(貪心)UI
- hdu 1789 Doing Homework again(簡單貪心)AI
- hdu4313 貪心並查集 || 樹形dp並查集
- HDU5630 Hiking(貪心+優先佇列)佇列
- HDU 4252A Famous City(弱資料可以使用貪心)
- HDU 5303 Delicious Apples (貪心 列舉 好題)APP
- HDU 5135 Little Zu Chongzhi's Triangles(狀壓dp或者貪心)
- 卡片遊戲遊戲
- 貪心——55. 跳躍遊戲 && 45.跳躍遊戲II遊戲
- 貪心模式記錄模式
- 貪心演算法演算法
- UVA11292 HDU1902 POJ3646 The Dragon of Loowater【貪心】Go
- LeetCode 55. 跳躍遊戲 ( 回溯 dp 貪心LeetCode遊戲
- Least Cost Bracket Sequence(貪心)ASTRacket
- 牛客 tokitsukaze and Soldier 貪心
- 24/03/20 貪心(一)
- leetcode:跳躍遊戲II(java貪心演算法)LeetCode遊戲Java演算法
- 貪心-國王的遊戲(大數乘除)、連線子串遊戲
- 學一下貪心演算法-學一下貪心演算法演算法
- 貪心演算法(貪婪演算法,greedy algorithm)演算法Go
- 淺談貪心與動歸
- 貪心演算法Dijkstra演算法
- 貪心(入門簡單題)
- hdu5289||2015多校聯合第一場1002貪心+RMQMQ
- 程式猿生存指南-63 貪心姑娘
- 演算法基礎–貪心策略演算法
- Moving Tables(貪心演算法)演算法
- 1413D. Shurikens(貪心,棧)3D
- Leetcode 貪心:差值調整LeetCode
- Python演算法:貪心策略Python演算法
- 靈茶之貪心模擬01
- HDU - 6003 Problem Buyer題解(貪心選擇演算法,鴿巢原理,優先佇列維護)演算法佇列
- 貪心演算法——換酒問題演算法
- openjudge8469特殊密碼鎖[貪心]密碼
- 【貪心】codeforces 825D Suitable ReplacementUI