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

จำนวนชิ้นสูงสุดในการตัด N ใน C++


ภารกิจคือการคำนวณจำนวนสูงสุดของชิ้นส่วนสี่เหลี่ยมจัตุรัสหรือสี่เหลี่ยมผืนผ้าที่มีขนาดเท่ากัน ที่สามารถรับได้โดยการตัดชิ้นสี่เหลี่ยมที่กำหนดในจำนวนครั้ง N ของการตัดในแนวนอนหรือแนวตั้ง

ตอนนี้มาทำความเข้าใจสิ่งที่เราต้องทำโดยใช้ตัวอย่าง -

ป้อนข้อมูล − N=8

ผลผลิต − 25

คำอธิบาย − เมื่อ N=8 จำนวนการตัดแนวตั้ง =4 และจำนวนการตัดแนวนอน =4

จำนวนชิ้นทั้งหมด =25

1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20
21 22 23 24 25

ป้อนข้อมูล − 7

ผลลัพธ์ − 20

1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20

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

  • ถ้า N คือจำนวนการตัด และเราต้องเพิ่มผลลัพธ์ของชิ้นงาน จะต้องทำให้จำนวนการตัดในแนวนอนและแนวตั้งเท่ากัน

    ถ้า N เป็นเลขคู่ การตัดแนวนอนและแนวตั้งเท่ากัน มิฉะนั้น ถ้า N เป็นเลขคี่ การตัดแนวนอนจะเป็น 1 มากกว่าการตัดแนวตั้ง หรือในทางกลับกัน

    ดังนั้น จำนวนการตัดแนวนอน =N/2 และการตัดแนวตั้ง =N-H.

  • ในฟังก์ชัน MaxPieces() เริ่มต้นตัวแปร H =N/2 ของประเภท int เพื่อเก็บจำนวนการตัดในแนวนอน

  • เริ่มต้นตัวแปรอื่น V=N-H ของประเภท int เพื่อเก็บจำนวนการตัดแนวตั้ง

  • จำนวนชิ้นสุดท้าย =(แถวแนวนอน)*(แถวแนวตั้ง) =(H+1)*(V+1)

ตัวอย่าง

#include <bits/stdc++.h>
using namespace std;
int MaxPieces(int N){
   //H is the number of horizontal cuts
   int H = N / 2;
   //V is the number of vertical cuts
   int V = N-H;
   // maximum number of pieces = (H+1)*(V+1)
   return ((H + 1) * (V + 1));
}
//Main function
int main(){
   //Number of cuts
   int N = 7;
   cout << "Max pieces = "<<MaxPieces(N);
   return 0;
}

ผลลัพธ์

หากเราเรียกใช้โค้ดข้างต้น เราจะได้ผลลัพธ์ดังต่อไปนี้ -

20