78 return (largest_square);
81 dp = (
int **)malloc(
sizeof(
int *) * map->
info.
rows);
83 return (largest_square);
85 while (i < map->info.rows) {
86 dp[i] = (
int *)malloc(
sizeof(
int) * map->
info.
cols);
91 return (largest_square);
98 while (i < map->info.rows) {
104 if (dp[i][0] > largest_square.
size) {
105 largest_square.
size = dp[i][0];
106 largest_square.
x = 0;
107 largest_square.
y = i;
113 while (j < map->info.cols) {
119 if (dp[0][j] > largest_square.
size) {
120 largest_square.
size = dp[0][j];
121 largest_square.
x = j;
122 largest_square.
y = 0;
129 while (i < map->info.rows) {
131 while (j < map->info.cols) {
135 dp[i][j] = ft_min(dp[i - 1][j], dp[i][j - 1], dp[i - 1][j - 1]) + 1;
140 if (dp[i][j] > largest_square.
size) {
141 largest_square.
size = dp[i][j];
142 largest_square.
x = j - largest_square.
size + 1;
143 largest_square.
y = i - largest_square.
size + 1;
144 }
else if (dp[i][j] == largest_square.
size) {
160 int current_x = j - dp[i][j] + 1;
161 int current_y = i - dp[i][j] + 1;
167 if (current_y < largest_square.
y ||
168 (current_y == largest_square.
y && current_x < largest_square.
x)) {
169 largest_square.
x = current_x;
170 largest_square.
y = current_y;
180 while (i < map->info.rows) {
186 return (largest_square);