我的代碼給出了錯誤的答案(根據裁判),我無法弄清楚爲什麼(第二個代碼)。幾天前我剛剛開始在CodeChef上解決一些簡單的問題。CodeChef「Double Strings」錯誤的答案
雙字符串是前半部分等於後半部分(字符串長度均勻)的字符串。問題陳述是找出通過刪除和更改長度爲N的迴文符號的順序可以獲得的最大可能字符數。
樣本輸入的第一行包含整數T - 數字的測試用例。然後,T行跟隨。每行包含一個整數N--迴文長度。
顯然,如果迴文的長度是偶數,那麼雙字符串的長度就是N.如果迴文的長度是奇數,那麼輸出應該是N-1。
這也是從我接受的解決辦法的一個明顯下面給出:
def main():
t = int(raw_input())
for i in xrange(t):
n = int(raw_input())
if n%2:
print (n-1)
else:
print n
if __name__ == "__main__":
main()
我什麼無法弄清楚的是,爲什麼我的其他解決方案(下)與理由拒絕爲錯誤答案,即使它做同樣的事情(根據我)。是否有任何情況下它會給出與上面代碼不同的輸出結果?
def main():
t = int(raw_input())
for i in xrange(t):
n = raw_input()
if n[-1] in '02468':
print int(n)
else:
print (int(n)-1)
if __name__ == "__main__":
main()
謝謝,添加'strip'讓它接受我的解決方案。問題規格說'每一行由一個整數N組成 - 一個迴文長度。'這導致我錯誤地認爲它只有沒有任何額外字符的整數。 –