Заполнить массив 5х5 единицами и нулями в случайном порядке - C (СИ)
Формулировка задачи:
заполнить массив 5х5 единицами и нулями в случайном порядке и проверить существует ли связь через единицы от верхней строки массива до нижней. Помогите пожалуйста срочно
Решение задачи: «Заполнить массив 5х5 единицами и нулями в случайном порядке»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #include <time.h> #define SIDE 5 typedef char cell_t; typedef cell_t board_t[SIDE][SIDE]; void init_board(board_t board) { int i, j; for ( i = 0; i < SIDE; ++i ) for ( j = 0; j < SIDE; ++j ) board[i][j] = rand() & 1; } void dump_board(board_t board) { int i, j; for ( i = 0; i < SIDE; ++i ) { for ( j = 0; j < SIDE; ++j ) printf("%2d ", board[i][j]); printf("\n"); } } int find_path(board_t board, int row, int column) { if ( row >= 0 && row < SIDE && column >= 0 && column < SIDE && board[row][column] > 0 ) { board[row][column] *= -1; if ( row == SIDE - 1 ) return 1; else { int found = ( find_path(board, row + 1, column) || find_path(board, row, column + 1) || find_path(board, row, column - 1) || find_path(board, row - 1, column) ); if ( ! found ) board[row][column] *= -1; return found; } } else return 0; } int main(void) { board_t board; int start; srand(time(NULL)); init_board(board); printf("Board:\n"); dump_board(board); for ( start = 0; start < SIDE && ! find_path(board, 0, start); ++start ) ; if ( start == SIDE ) printf("NO WAY!\n"); else { printf("Path:\n"); dump_board(board); } return 0; }
Объяснение кода листинга программы
В этом коде заполняется массив 5х5 единицами и нулями в случайном порядке, выводится на экран, затем проходит по всем возможным путям в поисках пути от левого верхнего угла к правому нижнему, если такой путь найден, то он выводится на экран, иначе выводится сообщение NO WAY!
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д