2015-12-24 48 views
-1

我試圖解決codechef 這裏的「複製 - 粘貼」規劃問題(https://www.codechef.com/problems/RRCOPY)是我曾嘗試任何人都可以解釋爲什麼我得到'錯誤答案'?

#include <iostream> 


using namespace std; 


bool isNumberInArray(int array[], int A, int size) 

{ 
bool isFound = false; 
for(int i = 0; i < size; i++) 
{ 
    if(array[i] == A) 
    { 
     isFound = true; 
     break; 
    } 
} 

return isFound; 

} 


int main() 

{ 
int T, i = 0, A, size = 0, count; 
int array[100000]; 
cin >> T; 
while(T--) 
{ 
    cin >> size; 
    count = 0; 
    i = 0; 
    while(size--) 
    { 
     cin >> A; 
     if(isNumberInArray(array, A, count) == false) 
     { 
      array[i] = A; 
      count++; 
     } 
     i++;   
    } 
    cout << count << endl; 
} 

return 0; 

} 

誰能告訴我在做什麼錯。 在此先感謝。

+0

你會得到什麼? – ManKeer

+0

錯誤答案@ManKeer – aman19161

+3

我們無法猜測某些代碼有什麼問題。一般來說,花費太多時間。您必須提供輸入,預期輸出和實際輸出。如果他們不可用,那麼我們很可能無法幫助你。 – Dialecticus

回答

0

你的程序有三個錯誤。

首先:爲什麼變量i在if塊之外。即使數組中有重複項,您也正在增加索引。 (你可以使用count而不是我)。

array[count]=A; 
count++; 

第二:在評估測試用例後,您不應該立即打印結果。您需要將所有測試用例的所有結果存儲在數組中,並在解決所有測試用例後將其打印出來。

第三:你的算法在O(n^2)上運行,這肯定會導致TLE。

您需要將算法改進爲O(n)。我的解決方案:https://www.codechef.com/viewsolution/9011078

下一次請更簡潔一下你想問什麼。

+0

立即輸出結果有什麼問題? – Dialecticus

+0

我對此不太確定......但是當我在codechef中編寫我的解決方案並立即輸出解決方案時,我的解決方案被拒絕了,所以我修改了它,並且它通過了。 –

+0

我在codechef中解決了一些其他問題,我立即打印了結果並被接受。 @ParagAgarwal – aman19161

相關問題