เราได้สามเหลี่ยมหน้าจั่วด้านขวา สามเหลี่ยมหน้าจั่วเป็นสามเหลี่ยมที่มีด้านสองด้านยาวเท่ากัน สามเหลี่ยมมุมฉากเป็นรูปสามเหลี่ยมที่มีความสูง(ag ในรูป) และฐาน (dg ในรูป) ตั้งฉากกัน เป้าหมายคือการหาจำนวนสูงสุดของสี่เหลี่ยมจัตุรัสที่สามารถใส่ลงในสามเหลี่ยมหน้าจั่วด้านขวาของด้าน 2 ตารางหน่วยได้ ฐานด้านข้างหรือความสูง (เท่ากันทั้งคู่) จะถูกนำมาเป็นอินพุต จำนวนช่องสี่เหลี่ยมที่ส่งออก
ดูรูปด้านล่างเพื่อทำความเข้าใจปัญหา
สามเหลี่ยมความสูง ag และฐาน gd ที่กำหนด มี 3 สี่เหลี่ยมด้านที่ 2 แต่ละอัน จากมุมสิ้นสุด 'a' และ 'd' สามเหลี่ยม aib และ cde จะไม่มีส่วนทำให้เกิดสี่เหลี่ยมจัตุรัสใดๆ อย่างแรกเลย เราจะต้องมีความยาวเพิ่มอีก 2 หน่วยสำหรับสามเหลี่ยมเหล่านี้เสมอ ไม่ เราต้องหารฐาน gd (หรือความสูง ag) ที่เหลือด้วย 2 เพื่อนับไม่ ของสี่เหลี่ยม ส่วนสูงก็จะเหมือนกัน ( ag )
while(base> 2 ) squares+=(base-2)/2 base =base-2.Use สูตรของ Ap =b*(b+1)/2….where new b=b-2
มาทำความเข้าใจกับตัวอย่างกัน
ป้อนข้อมูล − ฐาน:12
ผลผลิต − จำนวนช่อง :15
คำอธิบาย
ฐาน 12>2, สี่เหลี่ยม 10/2=5, ฐานใหม่ 12-2=10base 10>2, สี่เหลี่ยม 8/2=4, ฐานใหม่ 10-2=8base 8>2, สี่เหลี่ยม 6/2=3 , ฐานใหม่ 8-2=6ฐาน 6>2, สี่เหลี่ยม 4/2=2, ฐานใหม่ 6-2=4ฐาน 4>2, สี่เหลี่ยม 2/2=1, ฐานใหม่ 4-2=2ฐาน 2>2 X สี่เหลี่ยมทั้งหมด =5+4+3+2+1=15
ป้อนข้อมูล − .5
ผลผลิต − จำนวนสี่เหลี่ยม − 1
คำอธิบาย
ฐาน 5>2, สี่เหลี่ยม 3/2=1, ฐานใหม่ 5-2=3base 3>2, สี่เหลี่ยม 1/2=0, ฐานใหม่ 3-2=1base 1>2 X สี่เหลี่ยมทั้งหมด=1ก่อน>แนวทางที่ใช้ในโปรแกรมด้านล่างมีดังนี้
-
ฐานตัวแปรจำนวนเต็มใช้สำหรับเก็บฐานของสามเหลี่ยม..
-
ฟังก์ชัน numofSquares(int b) ใช้เพื่อนับจำนวนสี่เหลี่ยมจัตุรัสที่รูปสามเหลี่ยมที่มีฐาน b สามารถรองรับได้
-
ตอนแรก b=b-2 −พื้นที่เพิ่มเติมจากปลายมุม
-
ตามสูตร b=floor(b/2) b ใหม่นี้สามารถมี b*(b+1)/2 สี่เหลี่ยมด้าน 2
-
คืนค่าการคำนวณเป็นจำนวนช่องสี่เหลี่ยม
ตัวอย่าง
#include#include int numofSquares(int b){ // ลบส่วนพิเศษที่เราอยากได้ // ต้องการ b =(b - 2); // เนื่องจากแต่ละตารางมีฐาน // ความยาว 2 b =ชั้น (b / 2); ส่งคืน b * (b + 1)/2;}int main(){ int ฐาน =8; printf("จำนวนสูงสุดของสี่เหลี่ยมจัตุรัสที่สามารถรองรับได้ :%d",numofSquares(base)); คืนค่า 0;}
ผลลัพธ์
หากเราเรียกใช้โค้ดข้างต้น มันจะสร้างผลลัพธ์ต่อไปนี้ -
จำนวนสูงสุด ของตารางที่สามารถรองรับได้ :6