回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我试图找出哪些单词可以用Mendeelev表拼写。例如,“helico”一词可以拼写为He-Li-Co(氦锂碳氧),也可以拼写为He-Li-Co(氦锂钴)。
我为此写了一个小程序。我在单词列表中有单词(“helico”、“cute”等),元素在元素中(“H He Li”…)
我使用了递归,因为我认为我可以接受一个单词,在单词的开头查找一个元素,删除它,然后用较短的单词重新启动过程。如果这个词最后是空的,就意味着它是可以拼写的。
这是可行的,但问题是,一旦我找到了第一个解决方案(He Li C O),我就很难回到下一个解决方案——He Li C O
因为递归性,“helico”变成了“co”,我会找到co,但是已经“忘记”了第一部分(何莉)</p>
<p>我的感觉是,因为每个单词可能有几个解决方案,所以递归不适合。你知道吗</p>
<p>有什么想法吗?我不是在寻找解决办法,而是想办法帮我解决这个问题。。。你知道吗</p>
<pre class="lang-py prettyprint-override"><code>def search_element(startword, match):
print startword," MATCH IS",match
if startword =="":
print match, "empty startword"
match =""
for elem in elements:
#print elem,
if elem == "$$":
match =""
if startword.startswith(elem):
newword = startword.replace(elem,"",1)
match = match +" "+ elem
#print startword, elem, match, "----", newword
match = search_element(newword, match)
return(match)
elements = ['h', 'he', 'li', 'be', 'b', 'c', 'n', 'o', 'f', 'ne', 'na', 'mg', 'al', 'si', 'p', 's', 'cl', 'ar', 'k', 'ca', 'sc', 'ti', 'v', 'cr', 'mn', 'fe', 'co', 'ni', 'cu', 'zn', 'ga', 'ge', 'as', 'se', 'br', 'kr', 'rb', 'sr', 'y', 'zr', 'nb', 'mo', 'tc', 'ru', 'rh', 'pd', 'ag', 'cd', 'in', 'sn', 'sb', 'te', 'i', 'xe', 'cs', 'ba', 'la', 'ce', 'pr', 'nd', 'pm', 'sm', 'eu', 'gd', 'tb', 'dy', 'ho', 'er', 'tm', 'yb', 'lu', 'hf', 'ta', 'w', 're', 'os', 'ir', 'pt', 'au', 'hg', 'tl', 'pb', 'bi', 'po', 'at', 'rn', 'fr', 'ra', 'ac', 'th', 'pa', 'u', 'np', 'pu', 'am', 'cm', 'bk', 'cf', 'es', 'fm', 'md', 'no', 'lr', 'rf', 'db', 'sg', 'bh', 'hs', 'mt', 'ds', 'rg', 'cp', 'uut', 'uuq', 'uup', 'uuh', 'uus', 'uuo', '$$']
word_list =['helico', 'cute']
for word in word_list:
match=""
search_element(word, match)
</code></pre>