c语言 设计一个算法计算出广场可以建设的最大面积。
答案:2 悬赏:70 手机版
解决时间 2021-01-19 14:27
- 提问者网友:酱爆肉
- 2021-01-18 22:35
c语言 设计一个算法计算出广场可以建设的最大面积。
最佳答案
- 五星知识达人网友:第四晚心情
- 2021-01-18 23:41
#include
#include
int GetResult(int **a, int lenth, int width, int x, int y)
{
int i, j;
int row = 0, col = 0, size = 0;
int flag = 0;
if(a[x][y] != 0)
return 0;
for(i = y; i < lenth; i++)
{
if(a[x][i] == 0)
++row;
else
break;
}
for(j = x; j < width; j++)
{
if(a[j][y] == 0)
++col;
else
break;
}
size = row>col ? col:row;
for(i = x+1; i < x+size; i++)
{
for(j = y+1; j < y+size; j++)
{
// 第 x 行和第 y 列必为0
if(a[i][j] != 0)
{
size = j-y+1;
flag = 1;
break;
}
}
if(flag == 1)
break;
}
return size*size;
}
int main()
{
int i, j;
int lenth, width;
int area, maxArea = 0;
printf("请输入区域的长和宽:
");
scanf("%d %d", &lenth, &width);
int **a = (int**)malloc(sizeof(int*) * lenth);
for(i = 0; i < width; i++)
a[i] = (int*)malloc(sizeof(int) * width);
printf("请输入0-1矩阵:
");
for(i = 0; i < lenth; i++)
for(j = 0; j < width; j++)
scanf("%d", &a[i][j]);
for(i = 0; i < lenth; i++)
{
for(j = 0; j < width; j++)
{
area = GetResult(a, lenth, width, i, j);
if(area > maxArea)
maxArea = area;
}
}
printf("%d
", maxArea);
return 0;
}
#include
int GetResult(int **a, int lenth, int width, int x, int y)
{
int i, j;
int row = 0, col = 0, size = 0;
int flag = 0;
if(a[x][y] != 0)
return 0;
for(i = y; i < lenth; i++)
{
if(a[x][i] == 0)
++row;
else
break;
}
for(j = x; j < width; j++)
{
if(a[j][y] == 0)
++col;
else
break;
}
size = row>col ? col:row;
for(i = x+1; i < x+size; i++)
{
for(j = y+1; j < y+size; j++)
{
// 第 x 行和第 y 列必为0
if(a[i][j] != 0)
{
size = j-y+1;
flag = 1;
break;
}
}
if(flag == 1)
break;
}
return size*size;
}
int main()
{
int i, j;
int lenth, width;
int area, maxArea = 0;
printf("请输入区域的长和宽:
");
scanf("%d %d", &lenth, &width);
int **a = (int**)malloc(sizeof(int*) * lenth);
for(i = 0; i < width; i++)
a[i] = (int*)malloc(sizeof(int) * width);
printf("请输入0-1矩阵:
");
for(i = 0; i < lenth; i++)
for(j = 0; j < width; j++)
scanf("%d", &a[i][j]);
for(i = 0; i < lenth; i++)
{
for(j = 0; j < width; j++)
{
area = GetResult(a, lenth, width, i, j);
if(area > maxArea)
maxArea = area;
}
}
printf("%d
", maxArea);
return 0;
}
全部回答
- 1楼网友:低血压的长颈鹿
- 2021-01-19 01:08
#include
#include
int GetResult(int **a, int lenth, int width, int x, int y)
{
int i, j;
int row = 0, col = 0, size = 0;
int flag = 0;
if(a[x][y] != 0)
return 0;
for(i = y; i < width; i++)
{
if(a[x][i] == 0){
++row;
}
else
break;
}
for(j = x; j < lenth ; j++)
{
if(a[j][y] == 0)
++col;
else
break;
}
size = row>col ? col:row;
for(i = x+1; i < x+size; i++)
{
for(j = y+1; j < y+size; j++)
{
if(a[i][j] != 0)
{
size = j-y+1;
flag = 1;
break;
}
}
if(flag == 1)
break;
}
return size*size;
}
int main()
{
int i, j;
int lenth, width;
int area, maxArea = 0;
printf("请输入区域的长和宽: ");
scanf("%d %d", &lenth, &width);
int **a = (int**)malloc(sizeof(int*) * lenth);
for(i = 0; i < width; i++)
a[i] = (int*)malloc(sizeof(int) * width);
printf("请输入0-1矩阵: ");
for(i = 0; i < lenth; i++)
for(j = 0; j < width; j++)
scanf("%d", &a[i][j]); // 输入矩阵
for(i = 0; i < lenth; i++)
{
for(j = 0; j < width; j++)
{
area = GetResult(a, lenth, width, i, j); // 获取面积
if(area > maxArea)
maxArea = area;
}
}
printf("maxArea=%d ", maxArea);
return 0;
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯