2015-12-24 49 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

相关问题