C - Co realizuje ta funkcja?

0

Witam,
Jestem nowy na forum - witam wszystkich.

Mam prośbę, mógłby ktoś powiedzieć co realizuje i w jaki sposób ta funkcja? Z góry dziękuję za pomoc.
Ps. Mógłby ktoś mi opisać o co chodzi z **? Czy taki zapis oznacza macierz?

 int solution(int **A, int N, int M) {
 int i, j;
  int leftsum, rightsum;

  for ( i = 0; i < N; ++i)
  {
    leftsum = 0;  
    rightsum = 0;
 
			for (j = 0; j < i; j++)
			leftsum += A[j];
 
					for( j = i+1; j < N; j++)
					rightsum += A[j];
 
					if (leftsum == rightsum)
					return i;
    }

  return 2;
}
0

czy jest to rozwiazanie problemu equi o złożoności czasowej O(n^2) http://blog.codility.com/2011/03/solutions-for-task-equi.html ?

0

a mógłbyś coś więcej powiedzieć o tym i po Polsku? ;) to jest znajdowanie jakiejś zależności w macierzy chyba.

0

ten kod jest chyba przede wszystkim błędnie napisany. argument funkcji jest taki:

int **A

więc to będzie sumować jedynie wartości adresów poszczególnych elementów tablicy:

leftsum += A[j];

jak się domyślam, brakuje jeszcze indeksu [i].
albo nie. nie przeanalizowałem co robi ten algorytm. pozbądź się jednej gwiazdki(*) w pierwszym argumencie i usuń 3 argument, którego i tak nie używasz i będziesz miał chyba to samo co w linku podanym powyżej.

masiw napisał(a):

Ps. Mógłby ktoś mi opisać o co chodzi z **? Czy taki zapis oznacza macierz?

jest to wskaźnik na wskaźnik. może to być macierz.

0
  • to zazwyczaj wskaznik na tablicę, zapis wygląda w ten sposób ponieważ tablice w C są traktowane jak wskazniki
0
masiw napisał(a):

Witam,
Jestem nowy na forum - witam wszystkich.

Mam prośbę, mógłby ktoś powiedzieć co realizuje i w jaki sposób ta funkcja? Z góry dziękuję za pomoc.
Ps. Mógłby ktoś mi opisać o co chodzi z **? Czy taki zapis oznacza macierz?

int solution(int **A, int N, int M) {
int i, j;
int leftsum, rightsum;

for ( i = 0; i < N; ++i)
{
leftsum = 0;
rightsum = 0;

		for (j = 0; j < i; j++)
		leftsum += A[j];

				for( j = i+1; j < N; j++)
				rightsum += A[j];

				if (leftsum == rightsum)
				return i;
}

return 2;
}



To nie jest poprawny kod...

Tablice dwuwymiarowe indeksujesz dwoma liczbami, tz. tak: A[i,j];

1 użytkowników online, w tym zalogowanych: 0, gości: 1