เราได้สี่เหลี่ยมที่มีขนาดเป็นความสูง X กว้าง สี่เหลี่ยมผืนผ้าแสดงอยู่บนระบบพิกัด 2 มิติ โดยมีมุมซ้ายล่างอยู่ที่จุด (0,0) ดังนั้นเป้าหมายคือการนับจำนวนรูปสี่เหลี่ยมขนมเปียกปูนที่เป็นไปได้ภายในสี่เหลี่ยมผืนผ้านี้เพื่อให้เป็นไปตามเงื่อนไขทั้งหมด -
-
รูปสี่เหลี่ยมขนมเปียกปูนมีพื้นที่มากกว่า 0.
-
เส้นทแยงมุมของสี่เหลี่ยมขนมเปียกปูนนั้นขนานกับแกน x และ y
-
รูปสี่เหลี่ยมขนมเปียกปูนมีพิกัดจำนวนเต็มสำหรับทุกมุม
ให้เราเข้าใจด้วยตัวอย่าง
ป้อนข้อมูล − ความยาว=3 ความกว้าง=3
ผลผลิต − จำนวนรูปสี่เหลี่ยมขนมเปียกปูนที่เป็นไปได้ภายในสี่เหลี่ยมขนาดที่กำหนดคือ:4
คำอธิบาย − รูปด้านล่างมีสี่เหลี่ยมความสูง=ความกว้าง=3 นอกจากนี้เรายังสามารถเห็นสี่รูปสี่เหลี่ยมขนมเปียกปูนที่มีพื้นที่>0 และเส้นทแยงมุมขนานกับแกนทั้งสอง (รวมถึงพิกัดจำนวนเต็มด้วย) -
First [ (1,0), (2,1), (1,2), (0,1) ] Second [ (2,0), (3,1), (2,2), (1,1) ] Third [ (2,1), (3,2), (2,3), (1,2) ] Fourth [ (1,1), (2,1), (1,2), (0,1) ]
ป้อนข้อมูล − ความยาว=2 ความกว้าง=3
ผลผลิต − จำนวนรูปสี่เหลี่ยมขนมเปียกปูนที่เป็นไปได้ภายในสี่เหลี่ยมขนาดที่กำหนดคือ:2
คำอธิบาย − รูปด้านล่างมีสี่เหลี่ยม ความสูง=2 ความกว้าง=3 นอกจากนี้เรายังสามารถเห็นรูปสี่เหลี่ยมขนมเปียกปูนสองตัวอยู่ข้างใน
แนวทางที่ใช้ในโปรแกรมด้านล่างมีดังนี้
รูปสี่เหลี่ยมขนมเปียกปูนแรกที่มีพื้นที่ไม่เป็นศูนย์และพิกัดจำนวนเต็มจะเริ่มจากมุมบนขวาที่ (2,2) เริ่มการเดินทางจากดัชนี i=j=2 ถึง i<=length and j<=length. เพิ่ม i และ j 2 เพื่อกำหนดความยาวคู่ (สำหรับพิกัดจำนวนเต็ม) จำนวนรูปสี่เหลี่ยมขนมเปียกปูนที่มีเส้นทแยงมุมเหล่านี้จะเท่ากับ (height-i+1)X(width-j+1)
-
ใช้ความยาวและความกว้างเป็นจำนวนเต็ม
-
ฟังก์ชัน possible_rhombus(int length, int width) ใช้ขนาดของรูปสี่เหลี่ยมผืนผ้าและคืนค่าจำนวน rhombi ที่เป็นไปได้ภายในสี่เหลี่ยมผืนผ้าซึ่งเป็นไปตามเงื่อนไขที่กล่าวถึงทั้งหมด
-
นับเริ่มต้นเป็น 0
-
ข้ามจาก i=2 ถึง i<=length และ j=2 ถึง j<=width.
-
สำหรับแต่ละ i,j ใช้ temp_1=length-i+1 และ temp_2=width-j+1
-
เพิ่ม temp_1*temp_2 เพื่อนับ
-
เพิ่ม i และ j 2 (สำหรับพิกัดจำนวนเต็ม)
-
ผลตอบแทนนับในตอนท้ายเป็นผล.
ตัวอย่าง
#include <bits/stdc++.h> using namespace std; long long possible_rhombus(int height, int width){ long long count = 0; for (int i = 2; i <= height; i += 2){ for (int j = 2; j <= width; j += 2){ int temp_1 = height - i + 1; int temp_2 = width - j + 1; count += temp_1 * temp_2; } } return count; } int main(){ int height = 4, width = 4; cout<<"Count of number of rhombi possible inside a rectangle of given size are: "<<possible_rhombus(height, width); return 0; }
ผลลัพธ์
หากเราเรียกใช้โค้ดข้างต้น มันจะสร้างผลลัพธ์ต่อไปนี้ -
Count of number of rhombi possible inside a rectangle of given size are: 16