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

จำนวนสูงสุดในเมทริกซ์ N*N พร้อมข้อจำกัดที่กำหนดใน C++


ภารกิจคือการค้นหาจำนวนสูงสุดของเมทริกซ์ไบนารีที่เป็นไปได้โดยมีข้อจำกัดดังต่อไปนี้

จำนวนเต็มสองจำนวน N และ X ถูกกำหนดโดยที่ X<=N ขนาดของเมทริกซ์ไบนารีควรเป็น N*N และทุกเมทริกซ์ย่อยที่มีขนาด X*X ควรมีอย่างน้อยหนึ่งศูนย์

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

ป้อนข้อมูล − N=4, X=2

ผลผลิต − 12

คำอธิบาย − เมทริกซ์ผลลัพธ์จะเป็น -

1 1 1 1
1 0 0 1
1 0 0 1
1 1 1 1

ป้อนข้อมูล − N=7, X=3

ผลผลิต − 45

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

  • เพื่อให้ได้จำนวนสูงสุด ขั้นแรกเราต้องค้นหาจำนวนศูนย์ขั้นต่ำที่จำเป็นในเมทริกซ์ที่กำหนด

    เมื่อสังเกตรูปแบบทั่วไปในเมทริกซ์ทั้งหมด จะเห็นว่าจำนวนศูนย์ที่ต้องการ =(N / X) 2

    ดังนั้นจำนวนสูงสุด =องค์ประกอบทั้งหมดในเมทริกซ์ – จำนวนศูนย์\

  • ในฟังก์ชัน MaxOne() ให้สร้างตัวแปร Z ประเภท int และเก็บค่าศูนย์ขั้นต่ำที่ต้องการซึ่งเท่ากับ (N / X) 2

  • จากนั้นเริ่มต้นตัวแปรอื่น Total =N*N ของประเภท int เพื่อเก็บขนาดรวมของเมทริกซ์

  • จากนั้นให้เริ่มต้น int ans =total – Z เพื่อเก็บคำตอบสุดท้ายและส่งกลับ ans

ตัวอย่าง

#include <bits/stdc++.h>
using namespace std;
int MaxOne(int N, int X){
   // Minimum number of zeroes that are needed
   int Z = (N / X);
   Z = Z * Z;
   /* Totol elements in matrix = square of the size of the matrices*/
   int total =N * N;
   //Final answer
   int ans = total - Z;
   return ans;
}
int main(){
   int N = 4;
   int X = 2;
   cout << MaxOne(N, X);
   return 0;
}

ผลลัพธ์

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

12