problem
乙個地板被若干磚所覆蓋。現在請你判斷,這些磚是否恰好不重複,不遺漏的恰好覆蓋了整個地板。
input
第一行為乙個整數n,表示有n組測試資料。
每組測試資料第一行是兩個數l, w,表示地板的長和寬(不超過40000)。
第二行是乙個數t,表示有t塊磚(1<=t<=400)。
下面t行每行是四個數,xl,yl,xh,yh,其中(xl,yl)是磚的左下角座標,(xh,yh)是磚的右上角座標。
output
每組資料輸出包含一行。
如果輸入中磚有交叉覆蓋,則輸出」nondisjoint」
否則如果有磚超出了地板,則輸出」noncontained」
否則如果有部分地板沒有被覆蓋,則輸 出」noncovering」
否則輸出」ok」
題解
本題的關鍵盤是判斷是否有交叉覆蓋,判斷標準如下:
如果不覆蓋,c在a的右上角或b在a的左下角即可。
r.left r.right r.up r.down 表示乙個矩形r的左邊\右邊\上邊\下邊四個判斷(r1.left < r2.right) and (r2.left < r1.right) and (r1.up < r2.down) and (r2.up < r1.down)
**
var
nm,x,y,n,sum:longint;
x1,y1,x2,y2,s:array [0..401] of longint;
function
max(o,p:longint):longint;
begin
if o>p then
exit(o);
exit(p);
end;
procedure
init;
var i,j,l,t,l1,l2:longint;
f1,f2,f3:boolean;
begin
for l:=1
to nm do
begin
f1:=false; f2:=false; f3:=false;
sum:=0;
readln(x,y);
readln(n);
t:=max(x,y);
for i:=1
to n do
begin
readln(x1[i],y1[i],x2[i],y2[i]);
l1:=abs(x1[i]-x2[i]);
l2:=abs(y1[i]-y2[i]);
s[i]:=l1*l2;
sum:=sum+s[i];
if (x1[i]<0) or (x2[i]<0) or (y1[i]<0) or (y2[i]<0) then f2:=true;
if (x1[i]>t) or (x2[i]>t) or (y1[i]>t) or (y2[i]>t) then f2:=true;
end;
if sumthen f3:=true;
for i:=1
to n do
begin
if f1 then
break;
for j:=i+1
to n do
if (x1[j]>=x2[i]) or (x2[j]<=x1[i]) or (y1[j]>=y2[i]) or (y2[j]<=y1[i]) then
continue
else
begin
f1:=true;
break;
end;
end;
if f1 then writeln('nondisjoint') else
if f2 then writeln('noncontained') else
if f3 then writeln('noncovering') else
writeln('ok');
end;
end;
begin
readln(nm);
init;
end.
12 6(解構賦值)
物件的解構賦值用於從乙個物件取值,相當於將目標物件自身的所有可遍歷的 enumerable 但尚未被讀取的屬性,分配到指定的物件上面。所有的鍵和它們的值,都會拷貝到新物件上面。let x 1 y 2 z 由於解構賦值要求等號右邊是乙個物件,所以 如果等號右邊是undefined或null,就會報錯,...
1 26學習總結
把一顆色子搖6000次,統計每一面出現的次數 import random fs 0 6 列表的重複 for in range 6000 face random.randint 1,6 fs face 1 1print fs for i in range 1 7 print f 點出現了次 列表的生成...
1 26(測試總結)
1.軟體測試的目的與原則是什麼?目的 發現軟體的缺陷與漏洞,對軟體的質量進行評估,提公升軟體質量。原則 所有的軟體測試都應追溯到使用者需求。盡早地和不斷地進行軟體測試 完全測試是不可能的,測試需要終止。充分注意測試中的群集現象。程式設計師應避免檢查自己的程式。盡量避免測試的隨意性 2,測試人員在測試...