小白求助 想求喷洒区域的大小的程序改怎么写
想用无人机向旱情严重的某个农场喷水。 计划用无人机引爆水袋,向整个农场喷水。图(a)标明了在指定的农场用水袋喷洒水的区域。 想了解一下这些撒播的领域有多大。
无人机投掷的水袋具有位置和水袋的宽度和高度。 像这样用水袋喷洒的区域中,A是900,B是600,C是1600。 如果把这些都加起来,那就是3100,但是除了B和C重叠的领域100之外,洒水的领域是3000。
[输入输出] 输入显示投掷的水袋的数量,第二行开始显示水袋的位置x,y 和h水袋的宽度w和高度h的信息 没有输入输出的例子吗,单看文字,看不懂 wp231957 发表于 2021-9-9 14:43
没有输入输出的例子吗,单看文字,看不懂
输入和输出的结果是这样的 幫你整理範例中的輸入和輸出值吧,我也想學習:
{:5_109:}
題目
第一行:表示輸入顯示投擲的水袋的數量,
第二行開始:顯示水袋的位置 x,y 和水袋的寬度 w 和高度 h 的信息
示例輸入:3
35 65 30 30
75 35 30 20
100 55 40 40輸出:3000 傻眼貓咪 发表于 2021-9-9 15:04
幫你整理範例中的輸入和輸出值吧,我也想學習:
題目
要是n个矩形都相交,那这个题目难度嗖一下就完了 wp231957 发表于 2021-9-9 18:15
要是n个矩形都相交,那这个题目难度嗖一下就完了
请问就是这样输出的话该怎么写呀?
匿名者 发表于 2021-9-9 18:41
请问就是这样输出的话该怎么写呀?
关键是有超过 3 个矩形有公共部分的话,面积怎么算?
下面是 3 个的情况,如果是 4 个,5 个,6 个,。。。
这样面积要怎么算?
def overlap(A: list, B: list):
width = 0
height = 0
a, b = (A-A/2, A+A/2), (B-B/2, B+B/2)
if a < b and a > b:
if a > b:
width = b-b
elif a < b:
width = a-b
elif b < a and b > a:
if b > a:
width = a-a
elif b < a:
width = b-a
a, b = (A-A/2, A+A/2), (B-B/2, B+B/2)
if a < b and a > b:
if a > b:
height = b-b
elif a < b:
height = a-b
elif b < a and b > a:
if b > a:
height = a-a
elif b < a:
height = b-a
return width*height
def main():
N = int(input("輸入投擲水袋的數量:"))
area = []
for n in range(N):
x, y, w, h = map(int, input("水袋位置 x y,噴灑寬度 w,和高度 h(以空格隔開輸入):").split())
area.append([(x, y), w, h])
total = 0
res = 0
for i in range(N):
total += area*area
for j in range(i+1, N):
res += overlap(area, area)
print(f"灑水範圍:{total-res}")
if __name__ == "__main__":
main()輸入投擲水袋的數量:3
水袋位置 x y,噴灑寬度 w,和高度 h(以空格隔開輸入):35 65 30 30
水袋位置 x y,噴灑寬度 w,和高度 h(以空格隔開輸入):75 35 30 20
水袋位置 x y,噴灑寬度 w,和高度 h(以空格隔開輸入):100 55 40 40
灑水範圍:3000.0 既然不好算,那就不算了,面积为什么非的是 长 x 宽
import numpy as np
class box_t:
def __init__(self, width, height):
self.width = width
self.height = height
self.data = np.zeros((self.height, self.width))
def set_rect(self, x, y, width, height):
for i in range(height):
for j in range(width):
self.data = 1
def get_area(self):
area = 0
for y in range(self.height):
for x in range(self.width):
area += self.data
return int(area)
box = box_t(130, 100)
count = int(input())
for _ in range(count):
x, y, w, h = map(int, input().split())
x = int(x - (w / 2))
y = int(y - (h / 2))
box.set_rect(x, y, w, h)
print(box.get_area())
其實問題不難,難是解答代碼麻煩,我想說看看別人怎麼寫,再從中偷學技術/技巧,哪知沒有人寫,所以手癢癢花了十分鐘寫完了
页:
[1]