Задача
Таблица футбольного чемпионата задана квадратной матрицей порядка [latex]n[/latex], в которой все элементы, принадлежащие главной диагонали, равны нулю, а каждый элемент, не принадлежащий главной диагонали, равен [latex]2[/latex], [latex]1[/latex] или [latex]0[/latex] (числу очков, набранных в игре: [latex]2[/latex]- выигрыш, [latex]1[/latex]- ничья, [latex]0[/latex]- проигрыш).
б) Определить номера команд, прошедших чемпионат без поражений.
Количество команд. | Турнирная таблица. |
Номера команд, прошедшие турнир без поражений. |
Комментарий. | ||||||||||||||||||||
4 |
|
3 | Пройдено. | ||||||||||||||||||||
4 |
|
1 2 | Пройдено. | ||||||||||||||||||||
3 |
|
Ни одна из команд не прошла турнир без поражений. | Пройдено. | ||||||||||||||||||||
4 |
|
1 3 4 | Пройдено. |
От нас требуют определить номера команд, прошедших чемпионат без поражений. Турнирная таблица, которую нам следует проверить, имеет вид матрицы, где строки- это очки набранные командой, а столбцы- сами команды. Всего у нас столько команд, сколько элементов в столбце. Т.к команда не может играть сама с собой, диагональные элементы равны [latex]0[/latex].
Для начала вводим двумерный массив. Далее, в циклах, проверяем на наличие у команды поражения: для не диагональных элементов ([latex]i\neq j[/latex]), если команда хотя бы один раз проиграла, цикл обрывается и команда в дальнейшей проверке не участвует.
Если ни одна команда не прошла турнир без поражений, то для этого заводим счетчик [latex]k[/latex]. Если [latex]k>0[/latex], то хотя бы одна команда прошла турнир без поражений. Если [latex]k=0[/latex], то ни одна из команд не прошла без поражений.
Ниже представлен сам код (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 39 40 41 42 43 44 |
#include <iostream> #include <vector> using namespace std; int main() { int n, k=0; bool win; cin>>n; int A[n][n]; for(int i=1; i<=n; i++) { for(int j=1; j<=n; j++) { cin>>A[i-1][j-1]; //ввод турнирной таблицы (матрицы) } } cout<<"Номера команд, прошедших чемпионат без поражений:"; for(int i=1; i<=n; i++) { for(int j=1; j<=n; j++) { if(i!=j) { if(A[i-1][j-1]==0) { win=false; break; //проверка матрицы на проигравшие команды. } win=true; } } if(win==true) { cout<<" "<<i; k+=1; //печать команд, прошедших чеспионат без поражений. } //если таких команд нет, то для этого заведен специальный счетчки. } if(k==0) { cout<<" ни одна из команд не прошла турнир без поражений."; } 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 39 40 41 42 43 44 45 46 47 48 |
import java.util.*; import java.lang.*; import java.io.*; class Brovko { public static void main (String[] args) throws java.lang.Exception { int n, k=0; boolean win=true; Scanner in = new Scanner(System.in); n=in.nextInt(); int[][] A = new int[n][n]; for(int i=1; i<=n; i++) { for(int j=1; j<=n; j++) { A[i-1][j-1]=in.nextInt(); //ввод турнирной таблицы (матрицы) } } System.out.printf("Номера команд, прошедших чемпионат без поражений:"); for(int i=1; i<=n; i++) { for(int j=1; j<=n; j++) { if(i!=j) { if(A[i-1][j-1]==0) { win=false; break; //проверка матрицы на проигравшие команды. } win=true; } } if(win==true) { System.out.print(" "); System.out.format("%d ",i); k+=1; //печать команд, прошедших чеспионат без поражений. } //если таких команд нет, то для этого заведен специальный счетчки. } if(k==0) { System.out.print(" ни одна из команд не прошла турнир без поражений."); } } } |
Также, вы можете воспользоваться ссылкой (C++)/ссылкой (Java) на саму программу.