寫一個算法生成n位編碼的編碼串(結果有多種,任意一種都可以接受)并且符合如下條件:相鄰的兩個編碼之間有且只能有一位不同,并給出時間與空間復雜度
比如 2位的二進制的編碼生成的編碼串:00 01 11 10
比如 3位的二進制編碼生成的編碼串:001 011 111 101 100 110 010 000
Groovy實現:
List?generateBinaryStrings(int?length)?{
????if?(1?==?length)?return?['0',?'1']
????List?tempBinaryStrings?=?generateBinaryStrings(length?-?1)
????return?[tempBinaryStrings.collect{?"0$it"?},?tempBinaryStrings.reverse().collect{?"1$it"?}].flatten()
}
println?generateBinaryStrings(2)
println?generateBinaryStrings(3)
運行結果:
[00, 01, 11, 10]
[000, 001, 011, 010, 110, 111, 101, 100]
題目來源:http://www.tkk7.com/copydogcn/archive/2008/04/19/194256.html
附:
朝花夕拾——Groovy & Grails
posted on 2008-04-20 21:13
山風小子 閱讀(3481)
評論(11) 編輯 收藏 所屬分類:
Groovy & Grails 、
Algorithm