Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <malloc.h>
- int main()
- {
- int n = 0;
- scanf("%d", &n);
- int** matrix = malloc(n * sizeof(int*));
- for (int i = 0; i < n; i++)
- matrix[i] = malloc(n * sizeof(int));
- for (int q = 0; q < n; q++)
- for (int i = 0; i < n; i++)
- scanf("%d", &matrix[q][i]);
- /*ввели числа в матрицу*/
- int** sum = malloc(n * sizeof(int*));
- for (int i = 0; i < n; i++)
- sum[i] = malloc(n * sizeof(int));
- **sum = **matrix;
- for (int i = 1; i < n; i++)
- sum[0][i] = sum[0][i - 1] + matrix[0][i];
- /*по строке*/
- for (int q = 1; q < n; q++)
- sum[q][0] = sum[q - 1][0] + matrix[q][0];
- /*по столбцу*/
- for (int j = 1; j < n; j++)
- {
- sum[j][j] = (sum[j - 1][j] < sum[j][j - 1] ? sum[j - 1][j] : sum[j][j - 1]) + matrix[j][j];
- for (int i = j + 1; i < n; i++)
- sum[j][i] = (sum[j - 1][i] < sum[j][i - 1] ? sum[j - 1][i] : sum[j][i - 1]) + matrix[j][i];
- for (int q = j + 1; q < n; q++)
- sum[q][j] = (sum[q - 1][j] < sum[q][j - 1] ? sum[q - 1][j] : sum[q][j - 1]) + matrix[q][j];
- } /*заполнили таблицу минимальными суммами*/
- char** graphics = malloc(n * sizeof(char*));
- for (int i = 0; i < n; i++)
- graphics[i] = malloc(n * sizeof(char));
- for (int q = 0; q < n; q++)
- for (int i = 0; i < n; i++)
- graphics[q][i] = '-';
- int x = n - 1, y = n - 1; /*восстанавливаем с конца; координаты начала*/
- graphics[x][y] = '#';
- graphics[0][0] = '#';
- for (int h = 1; h < n + n - 2; h++) /*доходим до (0;0)*/
- if (x == 0)
- graphics[x][--y] = '#';
- else if (y == 0)
- graphics[--x][y] = '#';
- else if (sum[x - 1][y] + matrix[x][y] == sum[x][y])
- graphics[--x][y] = '#';
- else
- graphics[x][--y] = '#';
- for (int t = 0; t < n; t++)
- {
- for (int z = 0; z < n; z++)
- printf("%c", graphics[t][z]);
- puts("");
- }
- free(matrix);
- free(sum);
- free(graphics);
- return 0;
- }
Add Comment
Please, Sign In to add comment