Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

จำนวนสูงสุดของสี่เหลี่ยมจัตุรัสขนาด 2×2 ที่สามารถใส่ลงในสามเหลี่ยมหน้าจั่วด้านขวาใน C


เราได้สามเหลี่ยมหน้าจั่วด้านขวา สามเหลี่ยมหน้าจั่วเป็นสามเหลี่ยมที่มีด้านสองด้านยาวเท่ากัน สามเหลี่ยมมุมฉากเป็นรูปสามเหลี่ยมที่มีความสูง(ag ในรูป) และฐาน (dg ในรูป) ตั้งฉากกัน เป้าหมายคือการหาจำนวนสูงสุดของสี่เหลี่ยมจัตุรัสที่สามารถใส่ลงในสามเหลี่ยมหน้าจั่วด้านขวาของด้าน 2 ตารางหน่วยได้ ฐานด้านข้างหรือความสูง (เท่ากันทั้งคู่) จะถูกนำมาเป็นอินพุต จำนวนช่องสี่เหลี่ยมที่ส่งออก

ดูรูปด้านล่างเพื่อทำความเข้าใจปัญหา

จำนวนสูงสุดของสี่เหลี่ยมจัตุรัสขนาด 2×2 ที่สามารถใส่ลงในสามเหลี่ยมหน้าจั่วด้านขวาใน C

สามเหลี่ยมความสูง 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