본문내용
(char (*mat)[MAXSIZE], int mSize) // 대칭 관계 검사
{
int i, j;
for(i=0; i
{
for(j=0; j
{
if(mat[i][j] == 1)
printf("* ");
else
printf("0 ");
}
printf("\n");
}
for(i=0; i
{
for(j=0; j
{
if(mat[i][j] == 1)
// 0과 0은 상관없으므로 자신은 1인데 반대는 0인 수를 검사
{
if(mat[j][i]==0) // 반대쪽의 수가 다르면 대칭이 아님.
return FALSE;
}
}
}
for(i=0; i
{
for(j=0; j
{
if(mat[i][j] == 1)
// 위의 검사결과 양쪽은 모두 같으므로 1이 하나라도 있으면 대칭이다.
return TRUE;
}
}
return FALSE; // 모두 0인 경우
}
int isIrreflexive(char (*mat)[MAXSIZE], int mSize) // 비반사 관계 검사
{
int i;
for(i=0; i
{
if(mat[i][i]==1)
return FALSE;
}
return TRUE;
}
int isAntisymmetric(char (*mat)[MAXSIZE], int mSize) // 반대칭 관계 검사
{
int i, j;
for(i=0; i
{
for(j=0; j
{
if(mat[i][j] == 1)
printf("1 ");
else
printf("0 ");
}
printf("\n");
}
for(i=0; i
{
for(j=i; j
{
if(i==j) // 반대칭은 역슬러쉬 위의수를 포함하지 않음으로 넘겨줌.
continue
else if(mat[i][j] == 1) // 0과 0, 0과 1은 상관없으므로 1과 1인 경우만 검사.
{
if(mat[j][i]==1)
// 자신이 1인데 반대쪽의 수도 1인 경우가 있으면 반대칭이 아님.
return FALSE;
}
}
}
return TRUE;
}
{
int i, j;
for(i=0; i
for(j=0; j
if(mat[i][j] == 1)
printf("* ");
else
printf("0 ");
}
printf("\n");
}
for(i=0; i
for(j=0; j
if(mat[i][j] == 1)
// 0과 0은 상관없으므로 자신은 1인데 반대는 0인 수를 검사
{
if(mat[j][i]==0) // 반대쪽의 수가 다르면 대칭이 아님.
return FALSE;
}
}
}
for(i=0; i
for(j=0; j
if(mat[i][j] == 1)
// 위의 검사결과 양쪽은 모두 같으므로 1이 하나라도 있으면 대칭이다.
return TRUE;
}
}
return FALSE; // 모두 0인 경우
}
int isIrreflexive(char (*mat)[MAXSIZE], int mSize) // 비반사 관계 검사
{
int i;
for(i=0; i
if(mat[i][i]==1)
return FALSE;
}
return TRUE;
}
int isAntisymmetric(char (*mat)[MAXSIZE], int mSize) // 반대칭 관계 검사
{
int i, j;
for(i=0; i
for(j=0; j
if(mat[i][j] == 1)
printf("1 ");
else
printf("0 ");
}
printf("\n");
}
for(i=0; i
for(j=i; j
if(i==j) // 반대칭은 역슬러쉬 위의수를 포함하지 않음으로 넘겨줌.
continue
else if(mat[i][j] == 1) // 0과 0, 0과 1은 상관없으므로 1과 1인 경우만 검사.
{
if(mat[j][i]==1)
// 자신이 1인데 반대쪽의 수도 1인 경우가 있으면 반대칭이 아님.
return FALSE;
}
}
}
return TRUE;
}