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

นับจำนวนรูปสี่เหลี่ยมขนมเปียกปูนที่เป็นไปได้ภายในสี่เหลี่ยมผืนผ้าขนาดที่กำหนดใน C++


เราได้สี่เหลี่ยมที่มีขนาดเป็นความสูง 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) ]

นับจำนวนรูปสี่เหลี่ยมขนมเปียกปูนที่เป็นไปได้ภายในสี่เหลี่ยมผืนผ้าขนาดที่กำหนดใน C++

ป้อนข้อมูล − ความยาว=2 ความกว้าง=3

ผลผลิต − จำนวนรูปสี่เหลี่ยมขนมเปียกปูนที่เป็นไปได้ภายในสี่เหลี่ยมขนาดที่กำหนดคือ:2

คำอธิบาย − รูปด้านล่างมีสี่เหลี่ยม ความสูง=2 ความกว้าง=3 นอกจากนี้เรายังสามารถเห็นรูปสี่เหลี่ยมขนมเปียกปูนสองตัวอยู่ข้างใน

นับจำนวนรูปสี่เหลี่ยมขนมเปียกปูนที่เป็นไปได้ภายในสี่เหลี่ยมผืนผ้าขนาดที่กำหนดใน C++

แนวทางที่ใช้ในโปรแกรมด้านล่างมีดังนี้

รูปสี่เหลี่ยมขนมเปียกปูนแรกที่มีพื้นที่ไม่เป็นศูนย์และพิกัดจำนวนเต็มจะเริ่มจากมุมบนขวาที่ (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