我爲這個下一個迴文問題編寫了一個蠻力解決方案,並希望獲得超出時間限制。但是,當我測試了幾個測試用例,它正常工作,但是當我在spoj中提交代碼時,我得到了錯誤的答案。這是我的代碼。請有人能幫我弄清楚這個程序代碼有什麼問題。The Next Palindrome SPOJ
int main()
{
int t,k,cmp,tmp;
scanf("%d",&t); //No of test cases
while(t--)
{
scanf("%d",&k); //Enter the input
while(1)
{
++k; //Increment Every no if there is no palindrome
tmp=k;
cmp=0;
while(tmp%10 != 0) // Reverse a number
{
cmp=(cmp*10)+(tmp%10);
tmp=tmp/10;
}
if(k == cmp) // If Reverse and K are same its a palindrome .
{
printf("%d\n",k);
break;
}
}
}
return 0;
}
這裏是鏈接的問題:http://www.spoj.com/problems/PALIN/ 您可以提交我的解決方案:http://www.spoj.com/submit/PALIN/
問題出在輸入。他將輸入作爲一個不能保存10位以上的int的輸入,而輸入可能長達1000000位。 –
他接受輸入的方式是另一個問題,但是如果他糾正了我指出的錯誤,那麼該程序應該適用於小數字。是的,如果他將輸入存儲爲數組,他將需要另一種方法來檢查迴文,並且該程序可用於更大的數字。 –
是的你是對的。我將代碼稍微改了一點,以用於測試用例。它仍然顯示錯誤的答案。 while(tmp!= 0) cmp =(cmp * 10)+(tmp%10); tmp = tmp/10; } – user3045438