卡片遊戲
卡片遊戲
問題描述 :
小明最近宅在家裡無聊,於是他發明了一種有趣的遊戲,遊戲道具是N張疊在一起的卡片,每張卡片上都有一個數字,數字的範圍是0~9,遊戲規則如下:
首先取最上方的卡片放到桌子上,然後每次取最上方的卡片,放到桌子上已有卡片序列的最右邊或者最左邊。當N張卡片全部都放到桌子上後,桌子上的N張卡片構成了一個數。這個數不能有前導0,也就是說最左邊的卡片上的數字不能是0。遊戲的目標是使這個數最小。
現在你的任務是幫小明寫段程式,求出這個最小數。
首先取最上方的卡片放到桌子上,然後每次取最上方的卡片,放到桌子上已有卡片序列的最右邊或者最左邊。當N張卡片全部都放到桌子上後,桌子上的N張卡片構成了一個數。這個數不能有前導0,也就是說最左邊的卡片上的數字不能是0。遊戲的目標是使這個數最小。
現在你的任務是幫小明寫段程式,求出這個最小數。
輸入:
第一行是一個數T,表示有T組測試資料;
然後下面有T行, 每行是一個只含有0~9的字串,表示N張疊在一起的卡片,最左邊的數字表示最上方的卡片。
然後下面有T行, 每行是一個只含有0~9的字串,表示N張疊在一起的卡片,最左邊的數字表示最上方的卡片。
[Technical Specification]
T<=1000
1 <= N <= 100
輸出:
第一行是一個數T,表示有T組測試資料;
然後下面有T行, 每行是一個只含有0~9的字串,表示N張疊在一起的卡片,最左邊的數字表示最上方的卡片。
然後下面有T行, 每行是一個只含有0~9的字串,表示N張疊在一起的卡片,最左邊的數字表示最上方的卡片。
[Technical Specification]
T<=1000
1 <= N <= 100
樣例輸入:
3 565 9876543210
9876105432
樣例輸出:
556 1234567890 1678905432
/*
分析:
毫無疑問的,越是位數高的數字、其數值越小越好。
就是先找到非0的、最小的、在字串中最靠後的數字,這個數
就是ans的第一位了,再在原字串中這個數的左邊查詢最小值,
排在ans後面,而原字串中這個數的右邊的數保持不動。
*/
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
const int N = 105;
int l, r;
char str[N], ans[N];
void find(int a, int b)
{
if (b < a) return;
int index;
char min;
min = '9' + 1;
for (int i = b; i >= a; i--) if (str[i]<min) { min = str[i]; index = i; }
for (int i = b; i>index; i--) //補上右邊的數
ans[r--] = str[i];
ans[l++] = str[index]; //補上左邊的數
find(a, index - 1);
}
int main()
{
int t;
cin >> t;
while (t--)
{
int i;
int index, len;
char min;
scanf("%s", str);
len = strlen(str);
min = '9' + 1;
for (i = len - 1; i >= 0; i--)
{
if (str[i] == '0') continue;
if (str[i]<min) { min = str[i]; index = i; }
}
if (min == '9' + 1)
{
while (len--) printf("0");
cout << endl;
continue;
}
l = 0; r = len - 1;
ans[l++] = min;
for (i = len - 1; i>index; i--) ans[r--] = str[i]; //補上右邊的數
find(0, index - 1);
for (i = 0; i < len; i++) printf("%c", ans[i]);
printf("\n");
}
return 0;
}
相關文章
- HDU 4550卡片遊戲(貪心)遊戲
- 用 JavaScript 寫一個卡片小遊戲JavaScript遊戲
- uva10935卡片遊戲遊戲
- 小鑫の日常系列故事(五)——卡片遊戲 (sdut oj)遊戲
- card 卡片 htmlHTML
- 遊戲中的卡片模態皮膚設計【1】—運用案例分析遊戲
- 卡片瀑布流實現
- scrum看板工具卡片管理Scrum
- ios 卡片切換效果iOS
- 卡片旋轉動畫效果動畫
- 【程式設計題】黑白卡片程式設計
- 卡片盒筆記法筆記
- 【分享】 一款自用的Anki卡片模板:黃子涵單詞卡片 v1
- 技術卡片 - 不要使用 else
- Flutter 可拖拽的層疊卡片Flutter
- 自定義QQ和微信分享卡片
- Unity-卡片迴圈滾動Unity
- 卡片跳轉快應用指定頁面,如何點返回直接退出快應用回到卡片
- 第三個java程式(表白小卡片)Java
- xbanner實現卡片式輪播
- 抖音私信卡片跳轉微信教程
- uniapp自定義卡片輪播圖APP
- 抖音/快手/小紅書私信卡片線上製作
- 使用屬性Props完成一張卡片
- 任務卡片優先順序排序-Leangoo排序Go
- CSS神奇的卡片懸停互動效果CSS
- Element-Ui元件(四十一)Card 卡片UI元件
- 形式與功能 – 卡片式設計思考
- P2192 HXY玩卡片 題解
- 技術卡片 - 限制依賴注入的數量依賴注入
- 微信小程式實現卡片左右滑動效果微信小程式
- iOS 自定義卡片式控制元件:QiCardViewiOS控制元件View
- 程式設計卡片 001 - 更新 Laravel Installer程式設計Laravel
- 淘寶小部件:全新的開放卡片技術!
- 卡片電腦PINE64初學筆記筆記
- 鴻蒙HarmonyOS實戰-Stage模型(開發卡片事件)鴻蒙模型事件
- Django+Bootstrip 卡片模板設計 經典精品Djangoboot
- 微信公眾號回覆小程式卡片如何實現?