Treść zadania:
Macierzą permutacyjną nazywamy macierz kwadratową, której elementami są tylko zera i jedynki i która w każdym wierszu i w każdej kolumnie ma dokładnie jedną 1. Np. macierz jednostkowa jest macierzą permutacyjną. Napisz funkcję o nazwie Permutacyjna, której parametrami będą: tablica dwuwymiarowa A i dwie liczby naturalne m oraz n oznaczające, odpowiednio, liczbę wierszy i kolumn w macierzy A. Funkcja ta powinna zwrócić wartość 1, jeśli macierz A jest permutacyjna i wartość 0 w przeciwnym przypadku. Można założyć, że macierz nie będzie miała więcej niż 100 wierszy i 100 kolumn.
Mój kod:
#include <stdio.h>
int Permutacyjna(int m, int n, int A[m][n])
{
if(m!=n)
return 0;
int ilosc_jedynek;
//po wierszach
for(int i=0; i<m; i++)
{
ilosc_jedynek = 0;
for(int j=0; j<n; j++)
{
if(A[i][j]!=0 && A[i][j]!=1)
return 0;
if(A[i][j]==1)
{
ilosc_jedynek++;
printf("%d", ilosc_jedynek);
if(ilosc_jedynek>1)
return 0;
}
}
}
return 1;
}
int main(){
int m, n;
scanf("%d %d", &m, &n);
int A[m][n];
for(int i=0; i<m; i++)
{
for(int j=0; j<n; j++)
{
scanf("%d", &A[i][j]);
}
}
printf("%d", Permutacyjna(m, n, A[m][n]));
return 0;
}
Kiedy wczytuję macierz jednostkową 2x2, program zwraca 0 i nie rozumiem dlaczego tak się dzieje. W moim kodzie zliczam ile jest jedynek tylko po wierszach i chyba tak samo powinienem po kolumnach? Jak lepiej to napisać, może przy pomocy wskaźników?