小測驗 停車問題 題解

2021-07-30 15:44:24 字數 2331 閱讀 3777

—————-2017.4.17更新—————————

注意,以前看過這個****的人現在請重新看一遍,以前的如果輸入abccba的話應該輸出none但是源程式輸出的是abc所以有問題——2017.4.17

(以下是自己編的背景和題目沒有任何關係)

那麼故事接上上文。

卻說勇者一行人來到了牢房內,發現牆上掛著幾個模型。

上面是汽車與公路的簡圖,貌似講述了這個國家汽車——停車的發展史。

這時候,那個聲音有穿了過來。

「嘻嘻,這裡是我留給你們的測驗,來嘗試一下吧!」

題目描述

有一些車,在乙個環形的停車場內。

我們用小寫字母表示這些車,用大寫字母表示要停車的位置。現在車只可以沿著停車場走,問你按照什

麼順序停車是可行的。(停車場的寬度只能通過一輛車)

我們來看個例子:

b-a

/ \

b c

\ /

c-a

這裡我們看到有3 輛車a、b 和c。我們可以選擇a 先停到a 的位置,然後b 停到b,c 停到c。於是abc

的停車順序就是乙個合法的順序。

如果我們先停b 到b,此時c 便不能c(因為被別的車擋住了),此時便只能先停好a,再停c 了。

現在給乙個長度為n 的串,描述這個停車場的狀況(首尾是相鄰的)。

現在要你求出乙個合法的停車順序,如果存在多個,則輸出字典序最小的解。

輸入 一行乙個字串,描述停車場的現狀。(每個字母保證有對應的停車位,且只出現一次)

輸出 乙個序列,表示合法的停車順序。如果無解輸出』none』。

樣例輸入

bacacb

樣例輸出

abc正在大家冥思苦想之際,驚訝的發現模型的背後放著一張紙條。

「小貼士:這題可以貪心,但你們不會知道怎麼呢貪心的捏嘿嘿……「

汗……那麼我們要怎麼貪心呢?

首先,咱們先不去想如何貪心,咱們就平心而論,這道題能想到什麼?

圖論?這只是一道貪心,應該不至於那麼複雜。

模擬?

……沒準。

那麼我們就模擬吧!

暴力模擬怎麼實現呢?

我們把整個地圖存成陣列,讓它首尾相連。

此時對於每一輛車都有兩個選擇,向前開,或者向後開。

當它遇到了乙個小寫字母的時候,它就卡住了——這條路不行。

於是就嘗試下一條。

……最悲催的情況就是左右都走不通。

當我們走到停車點的時候。

將停車點變成小寫字母(表示不能通過),原來放車的點變成大寫字母(表示能通過)。

一直模擬下去就行啦!

……但是,還沒有完。

我們需要輸出字典序最小的方法。

此時就是神奇的貪心!

我們只需要列舉當前沒有停好車的車字典序最小的一次次開就可以啦!

以上,就是老司機能夠正常飆車的指南。

……那麼不能正常飆車呢?

很簡單,當列舉所有的車都沒法開的時候,我們就可以大膽輸出」none「了!

//強烈建議大家根據思路自己寫一遍,因為**是考試時候寫的+修改,可能會很亂。

#include

#include

#include

#include

#include

using namespace std;

char s[500];

char ops[500];

int na[255]=;

char ans[255]=;

int wa=0;

int eng=0;

int n;

void hahaha(int len)

//printf("%d

%d\n",zuo,you);

for(int j=zuo+1;j<=you-1;j++)

}if(ok==0)else

if(ops[j]>='a'&&ops[j]<='z');

else

}if(ok==0)else

return;}}

}}int non=0;

void dfs(int sum)

eng=0;

for(int i='a';i<='z';i++)

if(eng==1)

}if(eng==0)

dfs(sum-1);

return;

}int main()

}dfs(sum);

if(non==1)else

return

0;}

好的飈完車了,大門又再次開啟。

映入眼簾的是…………

小測驗 解密檔案 題解

因為題面複製不下來,所以咱們簡化題面。我們知道字母出現的概率 大寫字母視為小寫字母 現在給乙個加密後的文章,文章只有標點,大小寫字母和空格。加密的規則如下 0 k 26,a z編號為0 25,將字母i替換為 i k mod26,原來是大寫字母的還是大寫字母,原來是小寫字母的還是小寫字母。你需要列舉k...

python小測驗 python 小測驗複習

str 常用操作方法 1 首字母大寫,其他字母小寫 s dasda s1 s.capitalize print s1 2 居中center s asdad s1 s.center 30,print s1 3 大小寫翻轉 s1 s.swapcase print s1 4 每個單詞首字母大寫 非字母隔開...

珠心算測驗 題解

見鏈結 首先,我要說一句 既然題目說要去重,那不就是用個set嗎?建立乙個查詢用的set和乙個去重的set。由於這道題n 100 n le 100 n 10 0,而stl的set插入與查詢的時間複雜度均為o log n operatorname o operatornamen o logn 所以可以...