1. Створено матрицю 3 x 4, заповнити її числами 0 і 1 так, щоб в одному рядку була рівно одна одиниця, і вивести на екран.
2. Створити і вивести на екран матрицю 2 x 3, заповнену випадковими числами з [0, 9].
3. Дана матриця. Вивести на екран перший і останній стовпці.
4. Дана матриця. Вивести на екран перший і останній рядки.
5. Дана матриця. Вивести на екран всі рядки з парними номерами.
6. Дана матриця. Вивести на екран всі непарні стовпці.
7. Дан двомірний масив 5 × 5. Знайти суму модулів негативних непарних елементів.
8. Дан двоdbмірний масив n × m елементів. Визначити, скільки разів зустрічається число 7 серед елементів масиву.
9. Дана квадратна матриця. Вивести на екран елементи, які стоять на головній діагоналі.
10. Дана матриця. Вивести k-й рядок і p-й стовпець матриці.
Відповідь:
public class TMat1 {
public static void main(String[] args) {
int[][] matrix = {{0, 1, 0, 0}, {1, 0, 0, 0}, {0, 0, 1, 0}};
for (int i = 0; i < matrix.length; i++) {
for (int j = 0; j < matrix[i].length; j++) {
System.out.printf("%3d ", matrix[i][j]);
}
System.out.println();
}
}
}
Відповідь:
public class TMat2 {
public static void main(String[] args) {
Matrix m = new Matrix(2, 3, 0, 9);
System.out.println(m.toString());
}
}
Відповідь:
public class TMat3 {
public static void main(String[] args) {
Matrix m = new Matrix(5, 5, 0, 10);
System.out.println(m.toString());
System.out.println("Перший стовпець");
for (int i = 0; i < m.getN(); i++) {
System.out.printf("%3d%n", m.getColumn(0)[i]);
}
System.out.println("Останній стовпець");
for (int i = 0; i < m.getN(); i++) {
System.out.printf("%3d%n", m.getColumn(m.getM() - 1)[i]);
}
}
}
Відповідь:
public class TMat4 {
public static void main(String[] args) {
Matrix m = new Matrix(6, 0, 10);
System.out.println(m.toString());
System.out.println("Перший рядок");
for (int i = 0; i < m.getM(); i++) {
System.out.printf("%3d", m.getRow(0)[i]);
}
System.out.println("\nОстанній рядок");
for (int i = 0; i < m.getM(); i++) {
System.out.printf("%3d", m.getRow(m.getN() - 1)[i]);
}
}
}
Відповідь:
public class TMat5 {
public static void main(String[] args) {
Matrix m = new Matrix(5, 5, 0, 10);
System.out.println(m.toString());
for (int i = 1; i < m.getN(); i += 2) {
for (int j = 0; j < m.getM(); j++) {
System.out.printf("%3d", m.getRow(i)[j]);
}
System.out.println();
}
}
}
Відповідь:
public class TMat6 {
public static void main(String[] args) {
Matrix m = new Matrix(5, 5, 0, 10);
System.out.println(m.toString());
for (int i = 0; i < m.getM(); i += 2) {
for (int j = 0; j < m.getN(); j++) {
System.out.printf("%3d", m.getColumn(i)[j]);
}
System.out.println();
}
}
}
Відповідь:
import static java.lang.Math.abs;
public class TMat7 {
public static void main(String[] args) {
Matrix m = new Matrix(2, 2, -10, 10);
System.out.println(m.toString());
int sum = 0;
int element;
for (int i = 0; i < m.getN(); i++) {
for (int j = 0; j < m.getM(); j++) {
element = m.getElement(i, j);
if (element % 2 == -1 && element < 0) {
sum += abs(element);
}
}
}
System.out.println("Сума модулів непарних від'ємних елементів " + sum);
}
}
Відповідь:
public class TMat8 {
public static void main(String[] args) {
Matrix m = new Matrix(10, 10, 0, 10);
System.out.println(m.toString());
int count = 0;
for (int i = 0; i < m.getN(); i++) {
for (int j = 0; j < m.getM(); j++) {
if (m.getElement(i, j) == 7) {
count++;
}
}
}
System.out.println("Кількість елементів =7 -> " + count);
}
}
Відповідь:
public class TMat9 {
public static void main(String[] args) {
Matrix m = new Matrix(5, 2, 2);
System.out.println(m.toString());
System.out.println("Елементи головної діаганалі");
for (int i = 0; i < m.getN(); i++) {
System.out.printf("%3d", m.getElement(i, i));
}
}
}
Відповідь:
import java.util.Arrays;
import java.util.Scanner;
public class TMat10 {
public static void main(String[] args) {
Matrix m = new Matrix(5, 10, 0, 10);
System.out.println(m.toString());
System.out.println("Який рядок вивести? Від 1 до " + m.getN() + " -> ");
int n = new Scanner(System.in).nextInt();
System.out.println(Arrays.toString(m.getRow(n - 1)));
System.out.println("Який стовпець вивести? Від 1 до " + m.getM() + " -> ");
n = new Scanner(System.in).nextInt();
System.out.println(Arrays.toString(m.getColumn(n - 1)));
}
}
Відповідь:
public class TMat11 {
public static void main(String[] args) {
Matrix m = new Matrix(5, 4, 0, 10);
System.out.println(m.toString());
System.out.println("Змінена матриця");
int[] temp = new int[m.getM()];
for (int i = 0; i < m.getN(); i++) {
temp = m.getRow(i);
if (i % 2 == 0) {
for (int j = temp.length - 1; j >= 0; j--) {
System.out.printf("%3d", temp[j]);
}
} else {
for (int j = 0; j < temp.length; j++) {
System.out.printf("%3d", temp[j]);
}
}
System.out.println();
}
}
}
Відповідь:
public class TMat12 {
public static void main(String[] args) {
Matrix m = new Matrix(10, 1, 0, 0);
for (int j = 0; j < m.getM(); j++) {
m.setElement(1, 0, j);
m.setElement(1, m.getN() - 1, j);
}
for (int i = 0; i < m.getN(); i++) {
m.setElement(1, i, 0);
m.setElement(1, i, m.getM() - 1);
}
System.out.print(m.toString());
}
}
Відповідь:
public class TMat13 {
public static void main(String[] args) {
Matrix m = new Matrix(10, 1, 1);
for (int i = 0; i < m.getN(); i++) {
for (int j = i; j < m.getM(); j++) {
if(i==j){
m.setElement(3,i,j);
}else {
m.setElement(2,i,j);
}
}
}
System.out.println(m.toString());
}
}
Відповідь:
public class TMat14 {
public static void main(String[] args) {
Matrix m = new Matrix(10, 0, 9);
for (int i = 0; i < m.getN(); i++) {
m.setElement(1, i, m.getN() - i - 1);
}
System.out.println(m.toString());
}
}
Відповідь:
public class TMat15 {
public static void main(String[] args) {
Matrix m = new Matrix(3, 1, 0, 0);
m.setElement(1,0,0);
m.setElement(1,0,m.getM()-1);
m.setElement(1,m.getN()-1,0);
m.setElement(1,m.getN()-1,m.getM()-1);
System.out.println(m.toString());
}
}
Відповідь:
import java.util.Random;
public class TMat16 {
public static void main(String[] args) {
Random random = new Random();
Matrix m = new Matrix(10, 1, 1);
for (int i = 0; i < m.getN(); i++) {
m.setElement(random.nextInt(9) + 1, i, i);
}
System.out.println(m.toString());
}
}
Відповідь:
import java.util.Random;
public class TMat17 {
public static void main(String[] args) {
Matrix matrix = new Matrix(5, -10, 10);
modifyMatrix(matrix);
System.out.println(matrix.toString());
}
private static void modifyMatrix(Matrix matrix) {
int sum;
Random random = new Random();
int rElem;
int value;
for (int i = 0; i < matrix.getN(); i++) {
sum = getSumRow(matrix.getRow(i));
rElem = random.nextInt(matrix.getM());
sum -= matrix.getElement(i, rElem);
value = i + 1 - sum;
matrix.setElement(value, i, rElem);
}
}
private static int getSumRow(int[] row) {
int sum = 0;
for (int i = 0; i < row.length; i++) {
sum += row[i];
}
return sum;
}
}
Відповідь:
public class TMat18 {
public static void main(String[] args) {
Matrix matrix = new Matrix(10, 2, 0, 5);
System.out.println(matrix.toString());
changeMatrix(matrix);
System.out.println(matrix.toString());
}
private static void changeMatrix(Matrix matrix) {
int[] temp = matrix.getRow(matrix.getN() - 2);
matrix.setRow(matrix.getRow(matrix.getN() - 1), matrix.getN() - 2);
matrix.setRow(temp, matrix.getN() - 1);
}
}
Відповідь:
import java.util.Random;
public class TMat19 {
public static void main(String[] args) {
Matrix matrix = new Matrix(5, 5, 0, 0);
changeMatrix(matrix);
System.out.println(matrix.toString());
}
private static void changeMatrix(Matrix matrix) {
Random random = new Random();
int i;
int j;
for (int k = 0; k < matrix.getN(); k++) {
do {
i = random.nextInt(matrix.getN());
j = random.nextInt(matrix.getM());
}
while (matrix.getElement(i, j) == 1);
matrix.setElement(1, i, j);
}
}
}
Відповідь:
import java.util.Scanner;
public class TMat20 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Кількість рядків ->");
int n = scanner.nextInt();
System.out.print("Кількість стовбців ->");
int m = scanner.nextInt();
System.out.println("Вкажіть набір чисел");
Matrix matrix = new Matrix(n, m, 0, 0);
int temp;
for (int i = 0; i < n; i++) {
System.out.print(i + 1 + " число -> ");
temp = scanner.nextInt();
for (int j = 0; j < m; j++) {
matrix.setElement(temp, i, j);
}
}
System.out.println("\nШукана матриця\n");
System.out.println(matrix.toString());
}
}
Відповідь:
import java.util.Random;
public class TMat21 {
public static void main(String[] args) {
Matrix matrix = new Matrix(2, 1, 1);
changeMatrix(matrix);
System.out.println(matrix.toString());
}
private static void changeMatrix(Matrix matrix) {
Random random = new Random();
int j;
for (int i = 0; i < matrix.getN(); i++) {
j = random.nextInt(matrix.getM());
matrix.setElement(0, i, j);
}
}
}
Відповідь:
import java.util.Random;
public class TMat22 {
private static Random random = new Random();
private static Matrix matrix = new Matrix(10, 0, 0);
public static void main(String[] args) {
changeMatrix(matrix);
System.out.println(matrix.toString());
}
private static void changeMatrix(Matrix matrix) {
for (int j = 0; j < matrix.getM(); j++) {
if (j >= matrix.getN()) {
matrix.setColumn(setAllOne(), j);
} else {
matrix.setColumn(setOne(j+1), j);
}
}
}
private static int[] setOne(int i) {
int[] temp = new int[matrix.getN()];
int index;
for (int j = 0; j < i; j++) {
do {
index = random.nextInt(temp.length);
} while (temp[index] == 1);
temp[index] = 1;
}
return temp;
}
private static int[] setAllOne() {
int[] temp = new int[matrix.getN()];
for (int i = 0; i < temp.length; i++) {
temp[i] = 1;
}
return temp;
}
}
Відповідь:
public class TMat23 {
public static void main(String[] args) {
Matrix matrix = new Matrix(3, -1, 1);
System.out.println(matrix.toString());
int sum = getSumElem(matrix);
System.out.println("Сума елементів = " + sum);
}
private static int getSumElem(Matrix matrix) {
int sum = 0;
for (int i = 0; i < matrix.getN(); i++) {
for (int j = 0; j < matrix.getM(); j++) {
sum += matrix.getElement(i, j);
}
}
return sum;
}
}
Відповідь:
import java.util.Arrays;
public class TMat24 {
public static void main(String[] args) {
Matrix matrix = new Matrix(3, 10, -10, 10);
System.out.println(matrix.toString());
changeMatrix(matrix);
System.out.println(matrix);
}
private static void changeMatrix(Matrix matrix) {
int[] temp;
for (int i = 0; i < matrix.getN(); i++) {
temp = matrix.getRow(i);
Arrays.sort(temp, secondNegativeElement(temp), matrix.getM());
matrix.setRow(temp, i);
}
}
private static int secondNegativeElement(int[] row) {
int count = -1;
for (int i = 0; i < row.length; i++) {
if (row[i] < 0) {
count++;
}
if (count == 1) {
return i+1;
}
}
return row.length - 1;
}
}
Відповідь:
import java.util.Arrays;
public class TMat25 {
public static void main(String[] args) {
Matrix matrix = new Matrix(10, -10, 10);
System.out.println(matrix.toString());
getInfoMinElement(matrix);
}
private static void getInfoMinElement(Matrix matrix) {
System.out.println("Найменьші елементи в кожному рядку");
for (int i = 0; i < matrix.getN(); i++) {
minElement(matrix.getRow(i), i);
}
}
private static void minElement(int[] row, int i) {
Arrays.sort(row);
System.out.println(i + 1 + " рядок: " + row[0]);
}
}
Відповідь:
public class TMat26 {
public static void main(String[] args) {
Matrix matrix = new Matrix(1, 0, 10);
System.out.println("Початкова матриця");
System.out.println(matrix.toString());
int[] temp = matrix.getRow(0);
matrix.setRow(matrix.getRow(matrix.getN() - 1), 0);
matrix.setRow(temp, matrix.getN() - 1);
System.out.println("\nЗмінена матриця");
System.out.println(matrix.toString());
}
}
Відповідь:
public class TMat27 {
public static void main(String[] args) {
Matrix matrix = new Matrix(1, 2, 0, 20);
System.out.println(matrix.toString());
getInfo(matrix);
}
private static void getInfo(Matrix matrix) {
for (int i = 0; i < matrix.getN(); i++) {
if (isRise(matrix.getRow(i))) {
System.out.println(i + 1 + " рядок зростає.");
}
}
}
private static boolean isRise(int[] row) {
if (row.length == 1) {
return false;
}
for (int i = 0; i < row.length - 1; i++) {
if (row[i] >= row[i + 1]) {
return false;
}
}
return true;
}
}
Відповідь:
public class TMat28 {
public static void main(String[] args) {
Matrix matrix = new Matrix(5, -5, 5);
System.out.println(matrix.toString());
getInfo(matrix);
}
private static void getInfo(Matrix matrix) {
long div = divElemRows(matrix.getRow(0));
long temp;
int rows = -1;
for (int i = 1; i < matrix.getN(); i++) {
temp = divElemRows(matrix.getRow(i));
if (div > temp) {
div = temp;
rows = i + 1;
}
}
System.out.println(rows + " рядок шуканий");
}
private static long divElemRows(int[] row) {
long temp = 1;
for (int i = 0; i < row.length; i++) {
temp *= row[i];
}
System.out.println(temp);
return temp;
}
}
Відповідь:
public class TMat29 {
public static void main(String[] args) {
Matrix matrix = new Matrix(5, -2, 2);
System.out.println(matrix.toString());
matrix = changeMatrix(matrix);
System.out.println(matrix.toString());
}
private static Matrix changeMatrix(Matrix matrix) {
int index = findMaxZeroMatrix(matrix);
return delRow(matrix, index);
}
private static Matrix delRow(Matrix matrix, int index) {
if (index < 0 || index >= matrix.getN()) {
return matrix;
}
Matrix temp = new Matrix(matrix.getN() - 1, matrix.getM(), 0, 0);
for (int i = 0, j = -1; i < matrix.getN(); i++) {
j++;
if (i == index) {
i++;
}
temp.setRow(matrix.getRow(i), j);
}
return temp;
}
private static int findMaxZeroMatrix(Matrix matrix) {
int count = 0;
int temp;
int index = -1;
for (int i = 0; i < matrix.getN(); i++) {
temp = countZero(matrix.getRow(i));
if (count < temp) {
count = temp;
index = i;
}
}
return index;
}
private static int countZero(int[] row) {
int count = 0;
for (int i = 0; i < row.length; i++) {
if (row[i] == 0) {
count++;
}
}
return count;
}
}
Відповідь:
import static java.lang.Math.abs;
public class TMat30 {
static Matrix matrix = new Matrix(5, -10, 10);
public static void main(String[] args) {
// Matrix matrix=new Matrix(5,-10,10);
System.out.println(matrix.toString());
changeMatrix(matrix);
System.out.println(matrix);
}
private static void changeMatrix(Matrix matrix) {
int max = findMax(matrix);
setElements(matrix, max);
}
private static void setElements(Matrix matrix, int max) {
for (int i = 0; i < matrix.getN(); i++) {
for (int j = 0; j < matrix.getM(); j++) {
if (abs(matrix.getElement(i, j) % 2) == 1) {
matrix.setElement(max, i, j);
}
}
}
}
private static int findMax(Matrix matrix) {
int max = Integer.MIN_VALUE;
for (int i = 0; i < matrix.getN(); i++) {
for (int j = 0; j < matrix.getM(); j++) {
if (matrix.getElement(i, j) > max) {
max = matrix.getElement(i, j);
}
}
}
return max;
}
}
Відповідь:
public class TMat31 {
public static void main(String[] args) {
Matrix matrix = new Matrix(10, 4, 0, 5);
System.out.println(matrix.toString());
matrix = getTransposeMatrix(matrix);
System.out.println(matrix.toString());
}
private static Matrix getTransposeMatrix(Matrix matrix) {
Matrix temp = new Matrix(matrix.getM(), matrix.getN(), 0, 0);
for (int i = 0; i < temp.getM(); i++) {
temp.setColumn(matrix.getRow(i), i);
}
return temp;
}
}
Відповідь:
public class TMat32 {
public static void main(String[] args) {
Matrix matrix = new Matrix(5, 0, 10);
System.out.println(matrix.toString());
changeMatrix(matrix);
System.out.println(matrix.toString());
}
private static void changeMatrix(Matrix matrix) {
for (int i = 0; i < matrix.getM() - 1; i++) {
for (int j = i + 1; j < matrix.getM(); j++) {
if (matrix.getElement(0, i) > matrix.getElement(0, j)) {
swapColumn(matrix, i, j);
}
}
}
}
private static void swapColumn(Matrix matrix, int i, int j) {
int[] temp = matrix.getColumn(i);
matrix.setColumn(matrix.getColumn(j), i);
matrix.setColumn(temp, j);
}
}
Відповідь:
import java.util.Arrays;
public class TMat33 {
public static void main(String[] args) {
Matrix matrix = new Matrix(5, 0, 10);
System.out.println(matrix.toString());
matrix = changeMatrix(matrix);
System.out.println(matrix.toString());
}
private static Matrix changeMatrix(Matrix matrix) {
int[] maxElem = new int[matrix.getN()];
for (int i = 0; i < maxElem.length; i++) {
maxElem[i] = getMaxElemRows(matrix.getRow(i));
}
int minElemIndex = getMin(maxElem);
System.out.println(Arrays.toString(maxElem));
System.out.println("Видалено " + (minElemIndex + 1) + " рядок");
return delRow(matrix, minElemIndex);
}
private static Matrix delRow(Matrix matrix, int minElemIndex) {
Matrix temp = new Matrix(matrix.getN() - 1, matrix.getM(), 0, 0);
for (int i = 0, j = 0; i < matrix.getN(); i++, j++) {
if (i == minElemIndex) {
i++;
}
temp.setRow(matrix.getRow(i), j);
}
return temp;
}
private static int getMin(int[] maxElem) {
int min = Integer.MAX_VALUE;
int index = -1;
for (int i = 0; i < maxElem.length; i++) {
if (min > maxElem[i]) {
min = maxElem[i];
index = i;
}
}
return index;
}
private static int getMaxElemRows(int[] row) {
int max = Integer.MIN_VALUE;
for (int i = 0; i < row.length; i++) {
if (max < row[i]) {
max = row[i];
}
}
return max;
}
}
Відповідь:
public class TMat34 {
public static void main(String[] args) {
Matrix matrixA = new Matrix(1, 1, -2, 2);
Matrix matrixB = new Matrix(1, 1, -2, 2);
System.out.println("A");
System.out.println(matrixA.toString());
System.out.println("B");
System.out.println(matrixB.toString());
Matrix multAB = multABMatrix(matrixA, matrixB);
System.out.println("A*B");
System.out.println(multAB.toString());
}
private static Matrix multABMatrix(Matrix matrixA, Matrix matrixB) {
if (matrixA.getM() != matrixB.getN()) {
System.out.println("Добуток таких матриць не можливий");
return null;
}
Matrix temp = new Matrix(matrixA.getN(), matrixB.getM(), 0, 0);
int elment;
for (int i = 0; i < temp.getN(); i++) {
for (int j = 0; j < temp.getM(); j++) {
elment = getElemMult(matrixA.getRow(i), matrixB.getColumn(j));
temp.setElement(elment, i, j);
}
}
return temp;
}
private static int getElemMult(int[] row, int[] column) {
int elem = 0;
for (int i = 0; i < row.length; i++) {
elem += row[i] * column[i];
}
return elem;
}
}
Відповідь:
public class TMat35 {
public static void main(String[] args) {
Matrix matrix = new Matrix(5, -10, 10);
System.out.println(matrix.toString());
matrix = changeMatrix(matrix);
System.out.println(matrix.toString());
}
private static Matrix changeMatrix(Matrix matrix) {
for (int i = 1; i < matrix.getN() - 1; i++) {
for (int j = matrix.getM()-i; j < matrix.getM(); j++) {
if (i < j)
matrix.setElement(0, i, j);
}
}
return matrix;
}
}
Відповідь:
import java.util.ArrayList;
public class TMat36 {
public static void main(String[] args) {
Matrix matrix = new Matrix(1, 10, -1, 10);
System.out.println(matrix.toString());
matrix = changeMatrix(matrix);
System.out.println(matrix.toString());
}
private static Matrix changeMatrix(Matrix matrix) {
ArrayList indexs = getIndexPositiveColumn(matrix);
return delAllPositiveColumns(matrix, indexs);
}
private static ArrayList getIndexPositiveColumn(Matrix matrix) {
ArrayList indexs = new ArrayList<>();
for (int i = 0; i < matrix.getM(); i++) {
if (notAllPositive(matrix.getColumn(i))) {
indexs.add(i);
}
}
return indexs;
}
private static boolean notAllPositive(int[] column) {
for (int i = 0; i < column.length; i++) {
if (column[i] <= 0) {
return true;
}
}
return false;
}
private static Matrix delAllPositiveColumns(Matrix matrix, ArrayList indexs) {
Matrix temp = new Matrix(matrix.getN(), indexs.size(), 0, 0);
for (int i = 0; i < indexs.size(); i++) {
temp.setColumn(matrix.getColumn(indexs.get(i)), i);
}
return temp;
}
}
Відповідь:
Відповідь:
public class TMat38 {
public static void main(String[] args) {
Matrix matrix = new Matrix(5, -20, 20);
System.out.println(matrix.toString());
matrix = changeMatrix(matrix);
System.out.println(matrix);
}
private static Matrix changeMatrix(Matrix matrix) {
int max = findMax(matrix);
int min = findMin(matrix);
System.out.println("max=" + max + "; min=" + min);
int[] maxColumn = matrix.getColumn(max);
int[] minColumn = matrix.getColumn(min);
int[] newFirstColumn = multColumn(maxColumn, minColumn);
if (max == min) {
return newMatrix(matrix, newFirstColumn, max);
} else {
return newMatrix(matrix, newFirstColumn, max, min);
}
}
private static Matrix newMatrix(Matrix matrix, int[] newFirstColumn, int max) {
Matrix temp = new Matrix(matrix.getN(), matrix.getM(), 0, 0);
temp.setColumn(newFirstColumn, 0);
for (int i = 0, j = 1; j < temp.getM(); i++, j++) {
if (i == max) {
i++;
}
temp.setColumn(matrix.getColumn(i), j);
}
return temp;
}
private static Matrix newMatrix(Matrix matrix, int[] newFirstColumn, int max, int min) {
Matrix temp = new Matrix(matrix.getN(), matrix.getM() - 1, 0, 0);
temp.setColumn(newFirstColumn, 0);
for (int i = 0, j = 1; j < temp.getM(); i++, j++) {
while (i == max || i == min) {
i++;
}
temp.setColumn(matrix.getColumn(i), j);
}
return temp;
}
private static int[] multColumn(int[] maxColumn, int[] minColumn) {
int[] muiltiply = new int[maxColumn.length];
for (int i = 0; i < muiltiply.length; i++) {
muiltiply[i] = maxColumn[i] * minColumn[i];
}
return muiltiply;
}
private static int findMin(Matrix matrix) {
int min = Integer.MAX_VALUE;
int column = -1;
for (int i = 0; i < matrix.getN(); i++) {
for (int j = 0; j < matrix.getM(); j++) {
if (min > matrix.getElement(i, j)) {
min = matrix.getElement(i, j);
column = j;
}
}
}
return column;
}
private static int findMax(Matrix matrix) {
int max = Integer.MIN_VALUE;
int column = -1;
for (int i = 0; i < matrix.getN(); i++) {
for (int j = 0; j < matrix.getM(); j++) {
if (max < matrix.getElement(i, j)) {
max = matrix.getElement(i, j);
column = j;
}
}
}
return column;
}
}
Відповідь:
import java.util.ArrayList;
import java.util.Arrays;
public class TMat39 {
public static void main(String[] args) {
Matrix matrix = new Matrix(1, 5, 0, 5);
System.out.println(matrix.toString());
Integer[] saddlePoint = getSaddlePoint(matrix);
if (saddlePoint.length != 0) {
System.out.println("Значення: " + Arrays.toString(saddlePoint));
} else {
System.out.println("Сідлові точки в матриці відсутні");
}
}
private static Integer[] getSaddlePoint(Matrix matrix) {
int[] temp;
ArrayList al = new ArrayList<>();
int[] minElementsRows = getMin(matrix);
int[] maxElementsColumns = getMax(matrix);
initArrays(al, minElementsRows, maxElementsColumns);
return al.toArray(new Integer[al.size()]);
}
private static void initArrays(ArrayList al, int[] minElementsRows, int[] maxElementsColumns) {
for (int i = 0; i < minElementsRows.length; i++) {
for (int j = 0; j < maxElementsColumns.length; j++) {
if (minElementsRows[i] == maxElementsColumns[j]) {
al.add(minElementsRows[i]);
System.out.println("Координати [" + (i + 1) + "; " + (j + 1) + "]");
}
}
}
}
private static int[] getMax(Matrix matrix) {
int[] max = new int[matrix.getM()];
for (int i = 0; i < matrix.getM(); i++) {
max[i] = getMaxInColumns(matrix.getColumn(i));
}
return max;
}
private static int getMaxInColumns(int[] column) {
int max = Integer.MIN_VALUE;
for (int i = 0; i < column.length; i++) {
if (max < column[i]) {
max = column[i];
}
}
return max;
}
private static int[] getMin(Matrix matrix) {
int[] min = new int[matrix.getN()];
for (int i = 0; i < matrix.getN(); i++) {
min[i] = getMinInRows(matrix.getRow(i));
}
return min;
}
private static int getMinInRows(int[] row) {
int min = Integer.MAX_VALUE;
for (int i = 0; i < row.length; i++) {
if (min > row[i]) {
min = row[i];
}
}
return min;
}
}
Відповідь:
import java.util.Arrays;
public class TMat40 {
public static void main(String[] args) {
Matrix matrix = new Matrix(2, 10, -10, 10);
System.out.println(matrix.toString());
getInfo(matrix);
}
private static void getInfo(Matrix matrix) {
int[] countElements = new int[matrix.getM()];
for (int i = 0; i < countElements.length; i++) {
countElements[i] = getCounts(matrix.getColumn(i), i + 1);
}
System.out.println(Arrays.toString(countElements));
int minCount = getMin(countElements);
System.out.println("Найменьша кількість елементів в стовбці " + minCount);
}
private static int getMin(int[] countElements) {
int min = Integer.MAX_VALUE;
int index = -1;
for (int i = 0; i < countElements.length; i++) {
if (min > countElements[i]) {
min = countElements[i];
index = i;
}
}
return index + 1;
}
private static int getCounts(int[] column, int i) {
int count = 0;
for (int j = 0; j < column.length; j++) {
if (column[j] % (j + 1 + i) == 0) {
count++;
}
}
return count;
}
}
Відповідь:
import java.util.ArrayList;
import java.util.Arrays;
public class TMat41 {
public static void main(String[] args) {
Matrix matrix = new Matrix(3, 0, 10);
System.out.println(matrix.toString());
matrix = changeMatrix(matrix);
if (matrix != null)
System.out.println(matrix.toString());
}
private static Matrix changeMatrix(Matrix matrix) {
ArrayList numbRows = new ArrayList<>();
initNumbRows(matrix, numbRows);
return createNewMatrix(matrix, numbRows);
}
private static Matrix createNewMatrix(Matrix matrix, ArrayList numbRows) {
if (numbRows.size() == 0) {
System.out.println("Видалено всі рядки");
return null;
} else {
Matrix temp = new Matrix(numbRows.size(), matrix.getM(), 0, 0);
for (int i = 0; i < numbRows.size(); i++) {
temp.setRow(matrix.getRow(numbRows.get(i)), i);
}
return temp;
}
}
private static void initNumbRows(Matrix matrix, ArrayList numbRows) {
for (int i = 0; i < matrix.getN(); i++) {
if (isRepeatElements(matrix.getRow(i))) {
numbRows.add(i);
}
}
}
private static boolean isRepeatElements(int[] row) {
Arrays.sort(row);
for (int i = 0; i < row.length - 1; i++) {
if (row[i] == row[i + 1]) {
return true;
}
}
return false;
}
}
Відповідь:
Відповідь:
import java.util.Arrays;
public class TMat43 {
public static void main(String[] args) {
Matrix matrix = new Matrix(5, 1, -10, 10);
System.out.println(matrix.toString());
changeMatrix(matrix);
System.out.println(matrix.toString());
}
private static void changeMatrix(Matrix matrix) {
int[] characteristic = new int[matrix.getN()];
for (int i = 0; i < characteristic.length; i++) {
characteristic[i] = getCharacteristicRow(matrix.getRow(i));
}
System.out.println("Характеристика рядків " + Arrays.toString(characteristic) + "\n");
sortedRows(matrix, characteristic);
}
private static int getCharacteristicRow(int[] row) {
int sum = 0;
for (int i = 0; i < row.length; i++) {
if (row[i] < 0 && row[i] % 2 == 0) {
sum += row[i];
}
}
return sum;
}
private static void sortedRows(Matrix matrix, int[] characteristic) {
for (int i = 0; i < characteristic.length - 1; i++) {
for (int j = i + 1; j < characteristic.length; j++) {
if (characteristic[i] > characteristic[j]) {
swap(characteristic, i, j);
swap(matrix, i, j);
}
}
}
}
private static void swap(int[] characteristic, int i, int j) {
int t = characteristic[i];
characteristic[i] = characteristic[j];
characteristic[j] = t;
}
private static void swap(Matrix matrix, int i, int j) {
int[] temp = matrix.getRow(i);
matrix.setRow(matrix.getRow(j), i);
matrix.setRow(temp, j);
}
}
Відповідь:
public class TMat44 {
static int value = 1;
static int i = 0;
static int j = 0;
static int last;
static Matrix matrix;
public static void main(String[] args) {
matrix = new Matrix(5, 4, 0, 0);
last = matrix.getN() * matrix.getM();
moveRight();
System.out.println(matrix.toString());
}
private static void moveRight() {
matrix.setElement(value, i, j);
value++;
if (value > last) {
return;
}
if (j + 1 != matrix.getM() && matrix.getElement(i, j + 1) == 0) {
j++;
moveRight();
} else {
i++;
moveDown();
}
}
private static void moveDown() {
matrix.setElement(value, i, j);
value++;
if (value > last) {
return;
}
if (i + 1 != matrix.getN() && matrix.getElement(i + 1, j) == 0) {
i++;
moveDown();
} else {
j--;
moveLeft();
}
}
private static void moveLeft() {
matrix.setElement(value, i, j);
value++;
if (value > last) {
return;
}
if (j - 1 >= 0 && matrix.getElement(i, j - 1) == 0) {
j--;
moveLeft();
} else {
i--;
moveUp();
}
}
private static void moveUp() {
matrix.setElement(value, i, j);
value++;
if (value > last) {
return;
}
if (i - 1 >= 0 && matrix.getElement(i - 1, j) == 0) {
i--;
moveUp();
} else {
j++;
moveRight();
}
}
}
Відповідь:
public class TMat45 {
static int value = 1;
static int i = 0;
static int j = 0;
static int last;
static Matrix matrix;
public static void main(String[] args) {
matrix = new Matrix(7, 4, 0, 0);
last = matrix.getN() * matrix.getM();
moveDown();
System.out.println(matrix.toString());
}
private static void moveRight() {
matrix.setElement(value, i, j);
value++;
if (value > last) {
return;
}
if (j + 1 != matrix.getM() && matrix.getElement(i, j + 1) == 0) {
j++;
moveRight();
} else {
i--;
moveUp();
}
}
private static void moveDown() {
matrix.setElement(value, i, j);
value++;
if (value > last) {
return;
}
if (i + 1 != matrix.getN() && matrix.getElement(i + 1, j) == 0) {
i++;
moveDown();
} else {
j++;
moveRight();
}
}
private static void moveLeft() {
matrix.setElement(value, i, j);
value++;
if (value > last) {
return;
}
if (j - 1 >= 0 && matrix.getElement(i, j - 1) == 0) {
j--;
moveLeft();
} else {
i++;
moveDown();
}
}
private static void moveUp() {
matrix.setElement(value, i, j);
value++;
if (value > last) {
return;
}
if (i - 1 >= 0 && matrix.getElement(i - 1, j) == 0) {
i--;
moveUp();
} else {
j--;
moveLeft();
}
}
}
Відповідь:
import java.util.Arrays;
import java.util.Random;
public class TMat46 {
public static void main(String[] args) {
int size = 5;
int[][][] coube = getInts(size);
System.out.println(Arrays.deepToString(coube));
getInfoIJ(coube);
getInfoIK(coube);
getInfoJK(coube);
}
private static int[][][] getInts(int size) {
int[][][] coube = new int[size][size][size];
Random random = new Random();
for (int i = 0; i < size; i++) {
for (int j = 0; j < size; j++) {
for (int k = 0; k < size; k++) {
coube[i][j][k] = random.nextInt(2);
}
}
}
return coube;
}
private static void getInfoIK(int[][][] coube) {
for (int i = 0; i < coube.length; i++) {
for (int k = 0; k < coube.length; k++) {
if (isClearJ(coube, i, k)) {
System.out.printf("Координати [%d, 0, %d]\n", i + 1, k + 1);
}
}
}
}
private static void getInfoIJ(int[][][] coube) {
for (int i = 0; i < coube.length; i++) {
for (int j = 0; j < coube.length; j++) {
if (isClearK(coube, i, j)) {
System.out.printf("Координати [%d, %d, 0]\n", i + 1, j + 1);
}
}
}
}
private static void getInfoJK(int[][][] coube) {
for (int j = 0; j < coube.length; j++) {
for (int k = 0; k < coube.length; k++) {
if (isClearI(coube, j, k)) {
System.out.printf("Координати [0, %d, %d]\n", j + 1, k + 1);
}
}
}
}
private static boolean isClearK(int[][][] coube, int i, int j) {
for (int k = 0; k < coube.length; k++) {
if (coube[i][j][k] == 1) {
return false;
}
}
return true;
}
private static boolean isClearJ(int[][][] coube, int i, int k) {
for (int j = 0; j < coube.length; j++) {
if (coube[i][j][k] == 1) {
return false;
}
}
return true;
}
private static boolean isClearI(int[][][] coube, int j, int k) {
for (int i = 0; i < coube.length; i++) {
if (coube[i][j][k] == 1) {
return false;
}
}
return true;
}
}
Відповідь:
import java.util.Arrays;
import java.util.Random;
public class TMat47 {
public static void main(String[] args) {
changeMatrix();
}
private static void changeMatrix() {
Matrix matrix = new Matrix(3, 1, 1);
initMatrix(matrix);
System.out.println("Початкова матриця\n" + matrix.toString());
matrix = sortedRows(matrix);
System.out.println("відсортована матриця\n" + matrix.toString());
}
private static void initMatrix(Matrix matrix) {
Random random = new Random();
int[] mas = new int[matrix.getM()];
Arrays.fill(mas, 1);
int j;
for (int i = 0; i < matrix.getN(); i++) {
j = generateIndexJ(mas, random);
matrix.setElement(0, i, j);
}
}
private static Matrix sortedRows(Matrix matrix) {
Matrix temp = new Matrix(matrix.getN(), matrix.getM(), 0, 0);
int j;
for (int i = 0; i < matrix.getN(); i++) {
j = findIndex(matrix.getRow(i));
temp.setRow(matrix.getRow(i), j);
}
return temp;
}
private static int findIndex(int[] row) {
for (int i = 0; i < row.length; i++) {
if (row[i] == 0) {
return i;
}
}
return 0;
}
private static int generateIndexJ(int[] mas, Random random) {
int j;
do {
j = random.nextInt(mas.length);
} while (mas[j] == 0);
mas[j] = 0;
return j;
}
}
Відповідь:
import java.util.ArrayList;
import java.util.Arrays;
public class TMat48 {
public static void main(String[] args) {
Matrix matrix = new Matrix(5, 0, 3);
System.out.println(matrix.toString());
findLikeRows(matrix);
}
private static void findLikeRows(Matrix matrix) {
Integer[] firstRows = deleteReplays(matrix.getRow(0));
int count = 0;
for (int i = 1; i < matrix.getN(); i++) {
if (like(firstRows, matrix.getRow(i))) {
count++;
System.out.println("Рядок " + (i + 1) + " схожий");
}
}
if (count == 0) {
System.out.println("Схожі рядки відсутні");
}
}
private static boolean like(Integer[] firstRows, int[] row) {
if (Arrays.equals(firstRows, deleteReplays(row))) {
return true;
}
return false;
}
private static Integer[] deleteReplays(int[] row) {
Arrays.sort(row);
ArrayList list = new ArrayList<>();
list.add(row[0]);
for (int i = 1; i < row.length; i++) {
if (list.get(list.size() - 1) != row[i]) {
list.add(row[i]);
}
}
// System.out.println("->"+list.toString());
return list.toArray(new Integer[list.size()]);
}
}
Відповідь:
public class TMat49 {
public static void main(String[] args) {
Matrix matrix = new Matrix(4, 8);
System.out.println(matrix.toString());
matrix = changeMatrix(matrix);
System.out.println(matrix.toString());
}
private static Matrix changeMatrix(Matrix matrix) {
Matrix temp = new Matrix(matrix.getN(), 0);
init(temp, matrix);
return temp;
}
private static void init(Matrix temp, Matrix matrix) {
int[] rows;
for (int i = 0; i < matrix.getN(); i++) {
rows = rewers(matrix.getRow(i));
temp.setColumn(rows, temp.getM() - i - 1);
}
}
private static int[] rewers(int[] row) {
int[] temp = new int[row.length];
for (int i = 0; i < temp.length; i++) {
temp[i] = row[row.length - i - 1];
}
return temp;
}
}
Відповідь:
public class TMat50 {
public static void main(String[] args) {
Matrix matrix = new Matrix(2, 20);
System.out.println(matrix.toString());
getinfo(matrix);
}
private static void getinfo(Matrix matrix) {
int max = Integer.MIN_VALUE;
int temp;
for (int j = 0; j < matrix.getM(); j++) {
if (sorted(matrix.getColumn(j))) {
temp = matrix.getElement(matrix.getN() - 1, j);
if (max < temp) {
max = temp;
}
}
}
if (Integer.MIN_VALUE == max) {
System.out.println(0);
} else {
System.out.println(max);
}
}
private static boolean sorted(int[] column) {
for (int i = 0; i < column.length - 1; i++) {
if (column[i] >= column[i + 1]) {
return false;
}
}
return true;
}
}
Відповідь:
import java.util.Arrays;
import java.util.Scanner;
public class TMat51 {
public static void main(String[] args) {
System.out.print("Розмір матриці: ");
int size = new Scanner(System.in).nextInt();
Matrix matrix = new Matrix(size, 1, size);
System.out.println(matrix.toString());
checkedMatrix(matrix);
}
private static void checkedMatrix(Matrix matrix) {
int[] row;
int[] col;
for (int i = 0; i < matrix.getN(); i++) {
row = matrix.getRow(i);
col = matrix.getColumn(i);
if (noLatin(row, col)) {
System.out.println("Не латинський квадрат");
System.exit(0);
}
}
System.out.println("Латинський квадрат");
}
private static boolean noLatin(int[] row, int[] col) {
Arrays.sort(row);
Arrays.sort(col);
for (int i = 0; i < row.length; i++) {
if ((row[i] != i + 1) || (col[i] != i + 1)) {
return true;
}
}
return false;
}
}
52. ***************
Відповідь:
****************
Відповідь:
import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;
public class TMat53 {
public static void main(String[] args) {
Random r = new Random();
System.out.print("n->");
int n = new Scanner(System.in).nextInt();
int[][][] coube = new int[n][n][n];
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
for (int k = 0; k < n; k++) {
coube[i][j][k] = r.nextInt(2);
}
}
}
System.out.println(Arrays.deepToString(coube));
Matrix xy = getProectionXY(coube);
Matrix xz = getProectionXZ(coube);
Matrix yz = getProectionYZ(coube);
System.out.println("XY");
System.out.println(xy.toString());
System.out.println("XZ");
System.out.println(xz.toString());
System.out.println("YZ");
System.out.println(yz.toString());
}
private static Matrix getProectionXZ(int[][][] coube) {
Matrix xz = new Matrix(coube.length, 0);
for (int x = 0; x < coube.length; x++) {
for (int z = 0; z < coube.length; z++) {
xz.setElement(getValueY(coube, x, z), x, z);
}
}
return xz;
}
private static int getValueY(int[][][] coube, int x, int z) {
for (int i = 0; i < coube.length; i++) {
if (coube[x][i][z] == 1) {
return 1;
}
}
return 0;
}
private static Matrix getProectionXY(int[][][] coube) {
Matrix xy = new Matrix(coube.length, 0);
for (int x = 0; x < coube.length; x++) {
for (int y = 0; y < coube.length; y++) {
xy.setElement(getValueZ(coube, x, y), x, y);
}
}
return xy;
}
private static int getValueZ(int[][][] coube, int x, int y) {
for (int i = 0; i < coube.length; i++) {
if (coube[x][y][i] == 1) {
return 1;
}
}
return 0;
}
private static Matrix getProectionYZ(int[][][] coube) {
Matrix yz = new Matrix(coube.length, 0);
for (int y = 0; y < coube.length; y++) {
for (int z = 0; z < coube.length; z++) {
yz.setElement(getValueX(coube, y, z), y, z);
}
}
return yz;
}
private static int getValueX(int[][][] coube, int y, int z) {
for (int i = 0; i < coube.length; i++) {
if (coube[i][y][z] == 1) {
return 1;
}
}
return 0;
}
}
Відповідь:
public class TMat54 {
public static void main(String[] args) {
Matrix matrix = new Matrix(2, 5, 0, 1);
System.out.println(matrix.toString());
getInfo(matrix);
}
private static void getInfo(Matrix matrix) {
int[] temp = new int[matrix.getN()];
for (int i = 0; i < temp.length; i++) {
temp[i] = matrix.getElement(i, 0);
}
for (int i = 1; i < matrix.getM(); i++) {
if (allInvisible(matrix.getColumn(i), temp)) {
System.out.println("Стовпець " + (i + 1));
}
}
}
private static boolean allInvisible(int[] column, int[] temp) {
boolean flag = true;
int sum = 0;
for (int i = 0; i < column.length; i++) {
sum += column[i];
if (temp[i] < column[i]) {
flag = false;
temp[i] = column[i];
}
}
return (flag && (sum != 0));
}
}
Відповідь:
import java.util.Arrays;
public class TMat55 {
public static void main(String[] args) {
Matrix matrix = new Matrix(10, 1);
System.out.println(matrix.toString());
getInfo(matrix);
}
private static void getInfo(Matrix matrix) {
int[] colZero = new int[matrix.getN() * 2 + 2];
for (int i = 0; i < matrix.getN(); i++) {
colZero[i] = countZero(matrix.getRow(i));
colZero[matrix.getN() + i] = countZero(matrix.getColumn(i));
}
colZero[colZero.length - 2] = countZero(matrix.getMainDiagonal());
colZero[colZero.length - 1] = countZero(matrix.getCollateralDiagonal());
Arrays.sort(colZero);
System.out.println("Максимальна кількість " + colZero[colZero.length - 1]);
}
private static int countZero(int[] mas) {
int start = 0;
int end = 0;
int count = 0;
int max = Integer.MIN_VALUE;
for (int i = 0; i < mas.length; i++) {
if (mas[i] == 0) {
count++;
} else {
if (count == mas.length) {
System.out.println("Максимальна кількість " + count);
}
max = check(count, max);
count = 0;
}
}
max = check(count, max);
return max;
}
private static int check(int count, int max) {
if (count > max) {
max = count;
}
return max;
}
}
Відповідь:
import java.util.ArrayList;
public class TMat56 {
public static void main(String[] args) {
Matrix matrix = new Matrix(2, 3);
System.out.println(matrix.toString());
ArrayList numb = new ArrayList();
getInfo(matrix, numb);
System.out.println(numb.toString());
}
private static void getInfo(Matrix matrix, ArrayList numb) {
for (int j = 0; j < matrix.getM(); j++) {
if (isInAll(matrix, matrix.getElement(0, j))) {
numb.add(matrix.getElement(0, j));
}
}
}
private static boolean isInAll(Matrix matrix, int element) {
boolean flag = true;
for (int i = 1; i < matrix.getN(); i++) {
if (!isPresent(matrix.getRow(i), element)) {
return false;
}
}
return flag;
}
private static boolean isPresent(int[] row, int element) {
for (int i = 0; i < row.length; i++) {
if (row[i] == element) {
return true;
}
}
return false;
}
}
Відповідь:
import java.util.Arrays;
public class TMat57 {
private static int SIZE = 3;
public static void main(String[] args) {
Matrix matrix = new Matrix(3, 1);
System.out.println(matrix.toString());
if (checkMatrix(matrix)) {
System.out.println("Перемога");
} else {
System.out.println("Не виграли");
}
}
// перевірка рядків, стовпців та діоганалей матриці
private static boolean checkMatrix(Matrix matrix) {
int[] mas = new int[SIZE];
if (checkRows(matrix)) return true;
if (checkColumns(matrix)) return true;
if (checkD1(matrix)) return true;
if (checkD2(matrix)) return true;
return false;
}
private static boolean checkRows(Matrix matrix) {
int[] mas;
for (int i = 0; i < matrix.getN(); i++) {
for (int j = 0; j < matrix.getM() - SIZE + 1; j++) {
mas = Arrays.copyOfRange(matrix.getRow(i), j, j + SIZE);
if (check(mas)) {
System.out.println("Pobeda ryad");
return true;
}
}
}
return false;
}
private static boolean checkColumns(Matrix matrix) {
int[] mas;
for (int i = 0; i < matrix.getM(); i++) {
for (int j = 0; j < matrix.getN() - SIZE + 1; j++) {
mas = Arrays.copyOfRange(matrix.getColumn(i), j, j + SIZE);
if (check(mas)) {
System.out.println("Pobeda column");
return true;
}
}
}
return false;
}
private static boolean checkD1(Matrix matrix) {
int[] mas = new int[SIZE];
for (int i = 0; i < matrix.getN() - SIZE + 1; i++) {
for (int j = 0; j < matrix.getM() - SIZE + 1; j++) {
mas = getMasD1(matrix, mas, i, j);
if (check(mas)) {
System.out.println("Pobeda D1");
return true;
}
}
}
return false;
}
private static boolean checkD2(Matrix matrix) {
int[] mas = new int[SIZE];
for (int i = 0; i < matrix.getN() - SIZE + 1; i++) {
for (int j = SIZE - 1; j < matrix.getM(); j++) {
mas = getMasD2(matrix, mas, i, j);
if (check(mas)) {
System.out.println("Pobeda D2");
return true;
}
}
}
return false;
}
private static int[] getMasD1(Matrix matrix, int[] mas, int i, int j) {
for (int k = 0; k < SIZE; k++) {
mas[k] = matrix.getElement(i + k, j + k);
}
return mas;
}
private static int[] getMasD2(Matrix matrix, int[] mas, int i, int j) {
for (int k = 0; k < SIZE; k++) {
mas[k] = matrix.getElement(i + k, j - k);
}
return mas;
}
private static boolean check(int[] mas) {
int sum = 0;
for (int i = 0; i < mas.length; i++) {
sum += mas[i];
}
if (sum == SIZE) {
return true;
} else {
return false;
}
}
}
Відповідь:
import java.util.Scanner;
public class TMat58_2 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// System.out.print("n=");
int n = 2;// scanner.nextInt();
//System.out.print("m=");
int m = 2;//scanner.nextInt();
System.out.println();
Matrix matrix = new Matrix(n, m, 0, 1);
Matrix temp = new Matrix(n + 1, m + 1, 1, 1);
System.out.println(matrix.toString());
copyMatrix(matrix, temp);
getInfo(temp);
}
private static void copyMatrix(Matrix matrix, Matrix temp) {
for (int i = 0; i < matrix.getN(); i++) {
for (int j = 0; j < matrix.getM(); j++) {
temp.setElement(matrix.getElement(i, j), i, j);
}
}
}
private static void getInfo(Matrix matrix) {
int maxSize = 0;
int size = 1;
boolean flag = false;
for (int i = 0; i < matrix.getN(); i++) {
for (int j = 0; j < matrix.getM(); j++) {
if (matrix.getElement(i, j) == 0) {
size = getSize(matrix, i, j, size);
flag = true;
}
if (flag && (size >= maxSize)) {
maxSize = size;
size = 1;
}
}
}
System.out.println("max = " + maxSize);
}
private static int getSize(Matrix matrix, int i, int j, int size) {
if (notZero(matrix, i, j, size)) {
return size;
} else {
return getSize(matrix, i, j, size + 1);
}
}
private static boolean notZero(Matrix matrix, int i, int j, int size) {
if ((i + size >= matrix.getN()) || (j + size >= matrix.getM())) {
return true;
}
for (int k = 0; k < size; k++) {
if (matrix.getElement(k + i, j + size) == 1) {
return true;
}
}
for (int k = 0; k < size; k++) {
if (matrix.getElement(i + size, k + j) == 1) {
return true;
}
}
if (matrix.getElement(i + size, j + size) == 1) {
return true;
}
return false;
}
}
Відповідь:
import java.util.ArrayList;
import java.util.Arrays;
public class TMat59 {
public static void main(String[] args) {
Matrix matrix = new Matrix(10, 5);
System.out.println(matrix.toString());
getInfo(matrix);
}
private static void getInfo(Matrix matrix) {
ArrayList[] rows = new ArrayList[matrix.getN()];
for (int i = 0; i < matrix.getN(); i++) {
rows[i] = init(matrix.getRow(i));
}
for (int i = 0; i < rows.length - 1; i++) {
for (int j = i + 1; j < rows.length; j++) {
if (check(rows[i], rows[j])) {
System.out.println("Схожі (" + (i + 1) + "; " + (j + 1) + ")");
}
}
}
}
private static ArrayList init(int[] row) {
ArrayList list = new ArrayList();
Arrays.sort(row);
list.add(row[0]);
for (int i = 1; i < row.length; i++) {
if (row[i] != row[i - 1]) {
list.add(row[i]);
}
}
// display(list);
return list;
}
private static void display(ArrayList list) {
for (int i = 0; i < list.size(); i++) {
System.out.print(list.get(i) + " ");
}
System.out.println();
}
private static boolean check(ArrayList row1, ArrayList row2) {
if (row1.size() != row2.size()) {
return false;
}
for (int i = 0; i < row1.size(); i++) {
if (row1.get(i) != row2.get(i)) {
return false;
}
}
return true;
}
}
Комментариев нет:
Отправить комментарий