2012-06-04 64 views
2

我有長度1 <= |S| <= 100的字符串和K (1 <= K <= 10)動態規劃方法或失敗的貪婪

此字符串包含digits < K和問號的情況下。我想用digits < K替換這些問號,沒有兩個相鄰的數字是相等的。字符串是圓形的,所以它不能像這樣:1?111?

生成的字符串必須按字典順序最小。

例輸入和輸出

input: 
K = 4 
string = ????? 

output: 
01012 

我已經嘗試了貪婪的方法,但它不能對一些未知的測試用例。我認爲它需要一個dp方法,但無法弄清楚狀態,並且純粹的遞歸代碼不適合時間。

dp方法的任何幫助,或者貪婪失敗的棘手測試用例?

感謝,

+0

如果你不知道測試用例失敗,你怎麼知道它失敗? –

+0

不會生成一個「貪婪失敗」的測試用例,要求知道正在使用哪個貪婪算法? –

+0

@ScottHunter它提供錯誤的答案,當提交在線法官,我已經有效地實現了我的貪婪解決方案,所以我相信它需要一個dp方法 –

回答

2

如果你有串的一端的數字,貪心算法會給你正確的答案。

如果您的字符串以問號開頭和結尾,您有兩種可能性適用於第一個字符(0或1),請在兩種情況下運行貪婪算法並採取最佳措施。由Likao指出

錯誤答案:

貪婪的作品,但你必須與第一個問號剛剛已知數字之後是開始。

+0

嚴,不完全。我想盡量減少它,需要在已知數字前面(而不是後面)取第一個問號。但原則是一樣的。 – LiKao

+0

沒錯。貪婪會做這項工作,但是你必須「旋轉」你的繩子,這樣你才能從固定的邊界條件開始 – valdo

0

它簡單的回溯imo.Why使它與貪婪或動態複雜化。

+0

不,確定它會及時失敗。最糟糕的情況是長度爲100的字符串'?' –