@keddad
Ученик

Как решить задачу на сортировку?

Дана таблица N × N, заполненная целыми числами. Петр Первый считает столбец хорошим, если тот содержит число Х. Требуется для каждого столбца выяснить, является ли тот хорошим.

Входные данные
В первой строке число X, не превышающее по модулю 2*10^9. Во второй строке число N (1 <= N <= 100), В следующих N строках по N целых чисел, не превышающих по модулю 2*10^9 – числа в ячейках таблицы.

Выходные данные
Для каждого столбца выведите YES, если в нем есть число Х, и NO в противном случае. (Каждый ответ с новой строки)

Я написал такой код:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main(){
	int x, n, tmp;
	bool m;    
    cin >> x >> n;  
    vector<vector<int> > matrix(n);  // Обьявление матрицы векторов для хранения данных таблицы
    for (int i = 0; i < n; i++){
   		matrix[i].resize(n); // Расширяем каждый столбец таблицы до значения n
    }

    for(int i = 0; i < n; i++){
    	for(int j = 0; j < n; j++){
    		cin >> matrix[i][j]; // получаем числа на ввод
    	}
    }
	for(int i = 0; i < n; i++){	
		m = 0;
		for(int j = 0; j < n; j++){  //пробегаем циклом по столбцам, если в ячейке стобца есть x - выводим YES
			if(matrix[i][j] == x){
				m = true;
				break; 
			}
		}
		if(m){
			cout << "YES\n";
		} else{
			cout << "NO\n"; // если в столбце нет x, выводим NO и переходим к следующему столбцу
		}
	}
}

Но он не проходит и половины тестов, и я не понимаю почему. В чем ошибка? Как мне ее исправить?
  • Вопрос задан
  • 740 просмотров
Решения вопроса 1
@Wexter
Можно делать ввод и проверку в одном цикле с ресайзом, не нужно будет ещё два раза проходить.
Так-же вы проходы делаете по строкам при проверке, а не столбцам
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@superyateam
Java programmer
А что за тесты? Что за ошибки? Что за система в конце концов, которая это все проверяет?

Как вариант, Проверьте входные данные.
Что если подать на вход не число а строку, как поведет себя ваша программа? Что если подать число N больше 100 или меньше 0? Нужно ли в программе защищаться от такого ввода?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы