14492번 - 부울행렬의 부울곱
3 1 1 0 0 1 0 0 0 1 1 0 0 1 1 1 0 0 1
1 1 1
0 0 1
이 나와야 합니다.
그 이유 좀 알려 주세요 ㅠㅠ
열 셋쨋줄 첫번째 a와 행 3쨋줄 첫번째 b가 둘다 0이니 1로 나와 뒤에 있는 것들도 다 1 1 1이 되야지 않아요??
둘 다 0이면 곱해서 0이 나와야 합니다.
행렬 곱셈과 똑같은데 0보다 큰 것들은 다 1로 간주한다고 생각하시면 됩니다. 첫 번째 예제는 행렬 곱셈을 하면
2 1 1
이 나오므로, 0보다 큰 것들을 다 1로 바꾸면
이 나옵니다.
일단 순서가 이건 맞죠? 그리구
ㅠㅠ 도대체 조건을 어떻게 해야 돼요??
if (a[i][x] == b[x][i])
for (; x < n; x++)
{
a[i][x] = 1;
t += 1;
이렇게 하면 2예제만 되고,
if ( a[i][x] + b[x][i] >0)
}
이걸 하면 예제 1만 엉터리로 되고 조건을 어떻게 해야 되는 지 모르겠어요 ㅜㅜ
일단 혹시 행렬의 곱셈을 아시나요?
덕분에 잘 풀었습니다.ㅎㅎ
예제가 준대로 처음으로 잘 출력이 됬습니다.
근데 제출을 하니 틀렸다고 나오네요. ㅠㅠ
반례때문에 그런 거겠죠??
(제가 설정한 숫자로 바꿔 서 하면 잘만 나오는데 ..)
좀 도와 주세요^^
1의 오른쪽에 0이 오는 것도 얼마든지 가능합니다.
21 00 11 00 1
오른쪽 위가 비어 있어야 합니다.
감사합니다.드뎌 풀었네요. ㅠㅠ
한 열에서 1이 하나라도 있으면 그 뒤부터 계속 1이 써지는 줄 알았는데 ㅎㅎ (아니었네요
cij = (ai1∧b1j)∨(ai2∧b2j)∨...∨(ain∧bnj)
덕에 풀었습니다. 감사합니다 .ㅠㅠ
댓글을 작성하려면 로그인해야 합니다.
ekdns7952 4년 전
a는 행순으로 b는 열순으로 움직여서 이렇게 움직이는 데
입력을 이렇게 하면
1 1 1
1 1 1
1 1 1
이 나오게 되는 데 ;;;