2016-10-08 1 views
0

나는 나의 그래프의 보완을내어이 코드를 사용했다 -그래프 보완의 이러한 코드 스 니펫의 차이점은 무엇입니까?

for(i = 1; i <= n; i++) 
{ 
    for(j = 1; j <= n; j++) 
    { 
     if(i != j) 
     { 
      graph[i][j] = 1 - graph[i][j]; 
     } 
    } 
} 

이것은 잘못된 대답을 제공합니다. 내가 다음 코드로 대체 할 때, 그것은 이제 나는이 둘 사이의 차이를 알 수없는입니다

for(int i = 1; i <= n; i++){ 
    for(int j = 1; j <= n; j++){ 
     if(graph[i][j] == 1) 
      graph[i][j] = 0; 
     else if(i != j) 
      graph[i][j] = 1; 
    } 
} 

accepted- 얻을.

+0

graph [] []가 초기화 된 방법, 0으로 초기화되는지 또는 다른 것으로 초기화됩니까? –

+0

대각선에서 0으로 초기화되고, i와 j 사이에 모서리가 있으면 휴식합니다. garph [i] [j] = graph [j] [i] = 1 –

+1

흥미로운 것은 그 문제에 대한 링크를 전달할 수 있습니까? –

답변

1

이 :

if(i!=j) 
{ 
    graph[i][j]= 1-graph[i][j]; 
} 

는이 같은하지 : 첫 번째에서

if(graph[i][j] == 1) graph[i][j] = 0; 
else if(i != j)   graph[i][j] = 1; 

당신이 1-N 사방하지만 대각선으로 매트릭스를 수정하고 있습니다.

을 감안할 때이 행렬 :

1 1 0 
1 1 0 
1 1 0 

첫 번째 코드는 당신에게 줄 것이다 :

1 0 0 
0 1 0 
0 0 0 

공급관 하나가 당신에게 줄 것이다 :

0 0 1 
0 0 1 
0 0 0 
+1

내 행렬의 대각선이 0으로 초기화되고 그 안에 수정을 원하지 않습니다. –

+1

두 번째 알고리즘은 모든 대각선 1을 0으로 변환하고 그렇지 않으면 그대로 두십시오. – Aschab

0

이 시도 :

for(i=1;i<=n;i++) 
    { 
     for(j=1;j<=n;j++) 
     { 
     if(i != j || graph[i][j] == 1) 
     { 
      graph[i][j]= 1-graph[i][j]; 
     } 
     } 

    } 

방금 ​​코드를 추가하지 않았습니다. graph[i][j] == 1

+0

하지만 대각선 요소를 변경하지 않고 0이 1이되고 1이 0이되기를 원하십니까? –

+0

@Amisha Bansal을 기다리십시오. if (graph [i] [j] == 1) graph [i] [j] = 0;으로 올바르게 작성된 코드를 작성했습니다. graph [i] [j]의 값이 1이면 i와 j의 값을 0으로 만듭니다. 따라서 대각 요소가 1이면 0이됩니다. 예상되는 출력의 종류가 확실한 지 확인하십시오 ! @Aschab은 그래프 [i] [j] = 1 인 경우 대각선 요소가 0이 될 것이라고 언급했습니다! –

관련 문제