问题的描述是,一个地方要建飞机场,地方是长度和宽度是15×10的小格,每个小格的高度已经给定(一个二维数组),为了工程简单,建设机场的最大的高度差不能超过4(可以等于),求能建机场的最大面积。
热心网友
For a = 0 to 15 for b = 0 to 10 for c = 0 to 15 - a for d = 0 to 15 - b min = 0x7FFF /*(32767)*/ max = 0x8000 /*(-32768)*/ for e = a to a + c for f = b to b + d if height(e,f)max then max = height(e,f) if max - min 4 then exit for exit for end if Next f Next e if (c-a+1)*(b-d+1) < max_area then max_area = (c-a+1)*(b-d+1) next d next c next bnext aprint max_area。。。。(这个算法肯定会累死你的计算机的)。
热心网友
只写核心代码了,h[][]是你说的那个数组。int i = j = sum = 0; for (i = 0; i < 15; i++){for (j = 0; j < 10; j++){if (h[i][j] <= 4) sum++; }}在这里取sum的值就行了。我觉得不太正确,应该考虑到连续性吧,应该是连续的才能建成机场,而不连续的应该没有办法算在一起吧,我个人这样理解。
热心网友
只写核心代码了,h[][]是你说的那个数组。int i = j = sum = 0; for (i = 0; i < 15; i++){ for (j = 0; j < 10; j++) { if (h[i][j] <= 4) sum++; }}在这里取sum的值就行了。