Задача: Даны натуральное число [latex]n\geqslant 2 [/latex] , действительная квадратная матрица порядка [latex]n [/latex]. Построить последовательность [latex]b_{1}, \ldots, b_{n} [/latex] из нулей и единиц, в которой [latex]b_{i}=1 [/latex] тогда и только тогда, когда элементы строки матрицы образуют возрастающую последовательность.
Ввод:
5 |
1 | 2 | 3 | 4 | 5 |
6 | 5 | 4 | 3 | 2 |
0 | 1 | 2 | 3 | 4 |
-5 | 1 | 3 | 4 | 0 |
1 | 3 | 3.5 | 4.3 | 5 |
Вывод:
1 | 0 | 1 | 0 | 1 |
Решение:
Ссылка на ideone C++: http://ideone.com/RrsF1f
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
import java.util.*; import java.lang.*; import java.io.*; class Ideone { public static void main (String[] args) throws java.lang.Exception { Scanner in = new Scanner(System.in); int n,k=0; n=in.nextInt(); double a[][] = new double [n][n]; int b[] = new int [n]; for (int i=0; i<n; i++){ for (int j=0; j<n; j++){ a[i][j]=in.nextDouble(); } } for (int i=0; i<n; i++){ b[i]=1; for (int j=0; j<n-1; j++){ if (a[i][j]>a[i][j+1]){b[i]=0; break;} } } for (int i=0; i<n; i++){System.out.printf("%d ",b[i]);} } } |
Ссылка на ideone Java: http://ideone.com/eW8wJS
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
import java.util.*; import java.lang.*; import java.io.*; class Ideone { public static void main (String[] args) throws java.lang.Exception { Scanner in = new Scanner(System.in); int n,k=0; n=in.nextInt(); double a[][] = new double [n][n]; int b[] = new int [n]; for (int i=0; i<n; i++){ for (int j=0; j<n; j++){ a[i][j]=in.nextDouble(); } } for (int i=0; i<n; i++){ b[i]=1; for (int j=0; j<n-1; j++){ if (a[i][j]>a[i][j+1]){b[i]=0; break;} } } for (int i=0; i<n; i++){System.out.printf("%d ",b[i]);} } } |
Вводим матрицу [latex]a[n][n] [/latex]. Заранее присваиваем всем элементам матрицы [latex]b[n] [/latex] единицу. если условие не выполняется (элементы с строке введенной матрицы расположены не по возрастанию), то меняет единицу на ноль в матрице [latex]b[n] [/latex]
Нет, так нельзя. Эта часть мне решительно не нравится:
Зачем продолжать сравнения после того как найдено первое нарушение условия строгого возрастания? Зачем вообще что-то считать?
Уж лучше такой алгоритм:
— В цикле по i полагаем b[i]=1.
— Во вложенном цикле по j проверяем условие. Если найдено нарушение, то b[i]=0 и break.
Исправил.
Да, именно это я имел в виду. Зачёл.