in question buy-1 get-1 ,i have used freq[52]={0}(to initialize frequency array) in while loop of test case.While submitting, it gave wrong answer.after reading submitted solutions,i declared freq[52] in global scope and used for(i=0;i<52;i++)freq[i]=0 to initialize array in while loop,and it gave right answer.what’s difference?
As far as i know ,The statement freq[52]={0} (in general any declaration like my_array[SIZE] = {0}) can only be used once when initializing the array.It does not work any other time.
u mean this is wrong… ?
We cannot do this?
while(test–)
{
int arr[52]={0};
// any statement
}
Any declaration like my_array[SIZE] = {0}) can only be used once when initializing the array. For proof here is a simple code (in C++):
t=6;
int arr[6]={0};
while(t--)
{
arr[t]=t;
arr[6]={0}; //This should re-initialize array to zero but it does not!!
for(i=0 ; i<6 ;i++)
printf("%d ",arr[i]);
printf("\n");
}
Ans here is the output :
0 0 0 0 0 5
0 0 0 0 4 5
0 0 0 3 4 5
0 0 2 3 4 5
0 0 2 3 4 5
0 1 2 3 4 5
Moral of the story : Always re-initialize array manually (using a for loop) and no shortcuts!!
2 Likes
This would work fine but if you are defining the array in the global scope and then initializing the array as arr[52]={0} won’t work as told by @kcahdog in the answer.
1 Like