কম্পিউটার

C++ এ থ্রেশহোল্ডের চেয়ে কম বা সমান সমষ্টি সহ একটি বর্গক্ষেত্রের সর্বাধিক পার্শ্ব দৈর্ঘ্য


ধরুন আমাদের একটি m x n ম্যাট্রিক্স ম্যাট এবং একটি পূর্ণসংখ্যা থ্রেশহোল্ড আছে। প্রদত্ত থ্রেশহোল্ডের চেয়ে কম বা সমান সমষ্টি সহ একটি বর্গক্ষেত্রের সর্বাধিক পার্শ্ব-দৈর্ঘ্যে আমাদের থাকতে হবে বা যদি এমন কোনও বর্গ না থাকে তবে 0 ফেরত দিতে হবে। তাই যদি ইনপুট −

এর মত হয় ৷ ৷ ৷ ৷
1 1 3 2 43 2
1 1 3 2 43 2
1 13 2 43 2


৷ ৷ ৷
1 1 3 2 43 2
1 1 3 2 43 2
1 1 3 2 43 2

এবং থ্রেশহোল্ড হল 4, তাহলে আউটপুট হবে 2, যেহেতু পাশের দৈর্ঘ্য 2 এর দুটি বর্গক্ষেত্র আছে, তাই সর্বোচ্চ হল 2

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • ঠিক বলে একটি পদ্ধতি সংজ্ঞায়িত করুন, এটি x এবং ম্যাট্রিক্স m এবং থ্রেশহোল্ড লাগবে
  • curr সেট করুন :=0
  • আমি রেঞ্জ x – 1 থেকে ম্যাটের সারি সংখ্যা – 1
      এর জন্য
    • c এর জন্য x - 1 থেকে ম্যাটের কলের সংখ্যা - 1
      • curr :=mat[r, c]
      • যদি c – x>=0 হয়, তাহলে mat[r, c – x] দ্বারা curr হ্রাস করুন
      • যদি r – x>=0, তাহলে mat[r - x, c] দ্বারা curr হ্রাস করুন
      • যদি c – x>=0 এবং r – x>=0, তাহলে mat[r – x, c - x] দ্বারা curr বাড়ান]
      • যদি curr <=th, তারপর true ফেরত দিন
  • মিথ্যে ফেরত দিন
  • মূল পদ্ধতিতে, এটি ম্যাট্রিক্স এবং থ্রেশহোল্ড লাগবে
  • r :=সারির সংখ্যা, c :=কলামের সংখ্যা, নিম্ন :=1, উচ্চ :=r এবং c এর মিনিট, উত্তর :=0
  • আমি 1 থেকে c – 1
      পরিসরে
    • 0 থেকে c – 1
        পরিসরে j-এর জন্য
      • ম্যাট[j, i - 1] দ্বারা ম্যাট[j, i] বাড়ান]
  • আমি 1 থেকে r – 1
      পরিসরে
    • 0 থেকে c – 1
        পরিসরে j-এর জন্য
      • ম্যাট দ্বারা ম্যাট[j, i] বাড়ান[ i - 1,j]
  • যখন কম <=উচ্চ:
    • মধ্য :=নিম্ন + (উচ্চ - নিম্ন) / 2
    • যদি এর (মধ্য, মাট, ম), তাহলে উত্তর :=মধ্য এবং নিম্ন :=মধ্য + 1, অন্যথায় উচ্চ :=মধ্য - 1
  • উত্তর ফেরত দিন

উদাহরণ(C++)

আরো ভালোভাবে বোঝার জন্য নিচের বাস্তবায়নটি দেখি -

#include  namespace ব্যবহার করে std;typedef long long int lli;class Solution {public:bool ok(int x, vector >&mat, int th){ lli current =0; for(int r =x - 1; r =0) বর্তমান -=ম্যাট[r][c-x]; if(r -x>=0)current -=mat[r - x][c]; যদি (c - x>=0 &&r - x>=0) বর্তমান +=ম্যাট[r-x][c-x]; যদি (বর্তমান <=থ) সত্যে ফিরে আসে; } } ফেরত মিথ্যা; } int maxSideLength(vector>&mat, int th) { int r =mat.size(); int c =mat[0].size(); int low =1; int high =min(r, c); int ans =0; for(int i =1; i > v ={{1,1,3,2,4,3,2},{1,1,3,2,4,3,2},{ 1,1,3,2,4,3,2}}; সমাধান ob; cout <<(ob.maxSideLength(v, 4));}

ইনপুট

<প্রে>[[1,1,3,2,4,3,2],[1,1,3,2,4,3,2],[1,1,3,2,4,3,2 ]]৪

আউটপুট

2

  1. সর্বাধিক গুণফল সহ N-এর চারটি গুণনীয়ক নির্ণয় করুন এবং C++ এ N-এর সমান যোগফল নির্ণয় করুন

  2. ন্যূনতম সংখ্যা যা N এর থেকে ছোট বা সমান এবং C++ এ যোগফল S সহ

  3. C++ এ N এর থেকে কম বা সমান সংখ্যার মধ্যে সংখ্যার সর্বোচ্চ গুণফল বের করুন

  4. C++ এ পণ্যের সমান LCM সহ সর্বাধিক দৈর্ঘ্যের সাবয়ারে