1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
|
int first(int arr[], int low, int high)
{
if(high >= low)
{
int mid = low + (high - low)/2;
if ( ( mid == 0 || arr[mid-1] == 0) && arr[mid] == 1)
return mid;
// if the element is 0, recur for right side
else if (arr[mid] == 0)
return first(arr, (mid + 1), high);
else // If element is not first 1, recur for left side
return first(arr, low, (mid -1));
}
return -1;
}
int main()
{ int R=3,C=3;
int mat[R][C] = { {0, 0, 0, 1},
{0, 1, 1, 1},
{1, 1, 1, 1},
{0, 0, 0, 0}
};
int i,k=0,index;
int tab[5];
for (i = 0; i < R; i++)
{
index = first (mat[i],0, C-1);
tab[k]=index;
k++;
//printf("Index of row is %d \n", index);
} |
Partager