-
April 9th, 2009, 06:25 AM
#1
double astrix 2D array signature question..
its a question from a test:
i was asks what what1(arr,6,5) expression will return
??
arr is a 2D array which looks like this:
0 1 1 0 1
0 0 1 0 0
0 0 1 1 1
0 1 0 0 0
1 0 0 1 1
1 0 1 1 0
Code:
int what1(int **arr, int m, int n){
int i, j, tmp, stam=0;
for(i=0; i<m; i++)
for(j=0; j<n; j++){
tmp = what2(arr,i,j,m,n);
if (tmp>stam)
stam = tmp;
}
return stam;
}
int what2 (int **arr, int row, int col, int m, int n){
int i,j,tmp, stam=0;
if (row < 0 || row >= m || col < 0 || col >= n) return 0;
if (arr[row][col] == 0) return 0;
arr[row][col] = 0;
for(i=-1; i<2; i++)
for(j=-1; j<2; j++){
if(!i && !j) continue;
tmp = 1 + what2(arr, row+i, col+j, m, n);
if (tmp > stam) stam = tmp;
}
arr[row][col] = 1;
return stam;
}
why it passes the arr as
what1(arr,6,5) instead of what1(&arr,6,5)
can i do arr[0][0] = 0; for arr
if arr is passed instead of &arr
will it save the change after the function ends??
what2
has that line
and i cant decide what happens at the beginning when arr[0][0] = 0;
because arr is passed not &arr
so the change which that line will make
will not exist after what2 ends
??
-
April 9th, 2009, 06:54 AM
#2
Re: double astrix 2D array signature question..
what1(arr,6,5) instead of what1(&arr,6,5)
You say arr is a 2D array, presumably of type int**. what1 expects an int**. Why would you expect to be passing an int*** instead?
-
April 9th, 2009, 10:12 AM
#3
Re: double astrix 2D array signature question..
because
&arr is the way we pass double astrix variable
so we could make changes on the arr itself
??
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|