Задача: Дана целочисленная квадратная матрица порядка [latex]n[/latex]. Найти номера строк, все элементы которых — нули.
[latex]n[/latex] | [latex]M[/latex] | [latex]v[/latex] | Комментарий | ||||||||||||||||
4 |
|
1 3 | — | ||||||||||||||||
3 |
|
1 2 3 | — | ||||||||||||||||
3 |
|
— | Таких строк нет. |
C++:
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 28 29 30 31 32 33 34 35 36 37 38 |
#include <iostream> #include <vector> using namespace std; int main() { int n; cin >> n; int M[n][n]; vector<int> v; for (int i=0; i<n; i++) { for (int j=0; j<n; j++) { cin >> M[i][j]; } } for (int i=0; i<n; i++) { int k=0; for (int j=0; (j<n)&&(M[i][j]==0); j++) { k++; } if(k==n) { v.push_back(i); } } for (int i : v) { cout << i+1 << " "; } if (v.empty()) { cout << "Таких строк нет." << endl; } return 0; } |
Java:
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 28 29 30 31 32 33 34 35 36 37 38 |
import java.util.*; import java.lang.*; import java.io.*; class Ideone { public static void main (String[] args) { Scanner in = new Scanner(System.in); int n = in.nextInt(); int M[][] = new int[n][n]; Vector<Integer> v = new Vector<Integer>(); for (int i=0; i<n; i++){ for (int j=0; j<n; j++){ M[i][j] = in.nextInt(); } } for (int i=0; i<n; i++){ int k=0; for (int j=0; (j<n)&&(M[i][j]==0); j++){ k++; } if(k==n){ v.add(i); } } for (int i : v){ System.out.print(i+1+" "); } if (v.isEmpty()) { System.out.print("Таких строк нет."); } } } |
Пусть дана квадратная матрица [latex]M[/latex], количество строк и столбцов — [latex]n[/latex].
Заводим дополнительную переменную [latex]k[/latex]. При вводе элементов матрицы, проверяем, равны ли они нулю. Если элемент равен нулю, прибавляем к значению [latex]k[/latex] единицу. При первом ненулевом элементе переходим к другой строке. Если после прочтения строки [latex]k=n[/latex], то все элементы строки были нулевыми (перед прочтением каждой новой строки в [latex]k[/latex] записывается ноль). Записываем номер строки в заранее созданный вектор [latex]v[/latex]. Выводим элементы вектора, увеличивая их на единицу, чтобы получилась правильная нумерация строк.