Почему оператор не дает другой результат, а использует = дает правильный ответ - PullRequest
0 голосов
/ 29 мая 2020
 static int count = 0;

  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    count = 0;
    int n = sc.nextInt();
    int arr[][] = new int[n][n];
    for (int i = 0; i < n; i++) {
      for (int j = 0; j < n; j++) {
        arr[i][j] = sc.nextInt();
      }
    }
    for (int i = 0; i < n ; i++) {
      row(arr, n, i);
      column(arr, n, i);
    }
    System.out.println(count);
    for (int i = 0; i < n; i++) {
      for (int j = 0; j < n; j++) {
        System.out.print(arr[i][j] + " ");
      }
    }
  }

  static void row(int arr[][], int n, int row) {
    int x, y, min, yHold = 0;

    for (x = 0; x < n; x++) {
      boolean yes = false;
      min = arr[row][x];

      for (y = row; y < n; y++) {
        if (arr[y][x] < min) {
          min = arr[y][x];
          yHold = y;
          yes = true;
        }
      }
      if (yes) {
        int temp = arr[row][x];
        arr[row][x] = min;
        arr[yHold][x] = temp;
        count++;
      }
    }

Если я заменю yes=true на yes=!yes, результат станет другим. Пожалуйста, помогите, кажется, не могу понять. Часть проблемы, которую принимает функциональная строка:

Если мы находимся в i-й строке, то мы должны работать с каждым столбцом за раз от 0 до n − 1 этой строки . Для любого j-го столбца замените A [i] [j] минимумом всех элементов, которые присутствуют в столбце с индексом j и строках от индексов i до n − 1.

Ответы [ 2 ]

4 голосов
/ 29 мая 2020

Когда вы говорите yes = true, это всегда будет правдой. Но когда вы говорите yes = !yes, он будет переключаться между истинным и ложным.

boolean yes = true;
for (int i = i < 10; i++) {
 System.out.println(yes);   
 yes =! yes;
}

печатает

true
false
true
false
true
false
true
false
true
false
3 голосов
/ 29 мая 2020

Проблема в том, что оператор может выполняться несколько раз. В случае yes = true результат всегда будет таким, что yes станет true. Но с yes = !yes результат таков, что yes будет переключаться между true и false.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...