Я использовал этот фрагмент кода для получения дополнения к моему графику —
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;
}
}
Я не могу понять разницу между этими двумя.
этот:
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
Попробуй это:
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