কম্পিউটার টিউটোরিয়াল

C++ কোড: দেওয়া ম্যাট্রিক্স ভালো কিনা চেক করা


মান লক্ষ্য করুন একটি n x n ম্যাট্রিক্স। ম্যাট্রিক্সটি ভালো বলা হবে যদি ১ থেকে ভিন্ন প্রতিটি সংখ্যা একই রো-এর একটি সংখ্যা এবং একই কলামের একটি সংখ্যার যোগফল হিসেবে এক্সপ্রেস করা যায়। আমাদের চেক করতে হবে দেওয়া ম্যাট্রিক্স ভালো কিনা।

তাই, যদি ইনপুট হয়

1 1 2
2 3 1
6 4 1

তবে আউটপুট হবে True, কারণ বাম নিচের ৬টি বৈধ কারণ তার উপরের ২ এবং ডানের ৪ যোগফল ৬। এই ম্যাট্রিক্সে ১ থেকে ভিন্ন সব সংখ্যার জন্য একই প্রয়োগ হয়।

ধাপসমূহ

এটি সমাধান করার জন্য, আমরা এই ধাপগুলো অনুসরণ করব −

n := size of M
for initialize i := 0, when i < n, update (increase i by 1), do:
    for initialize j := 0, when j < n, update (increase j by 1), do:
        ok := 0
        if M[i, j] is not equal to 1, then:
            c := M[i, j]
            for initialize h := 0, when h < n, update (increase h by 1), do:
                for initialize k := 0, when k < n, update (increase k by 1), do:
                    if c is same as M[i, h] + M[k, j], then:
                        ok := 1
        if ok is same as 0 and M[i, j] is not equal to 1, then:
            return false
return true

উদাহরণ

বेहतर বোঝার জন্য ইমপ্লিমেন্টেশন দেখি −

#include <bits/stdc++.h>
using namespace std;
bool solve(vector<vector<int>> M){
    int n = M.size();
    int c;
    bool ok;
    for (int i = 0; i < n; i++){
        for (int j = 0; j < n; j++){
            ok = 0;
            if (M[i][j] != 1)
                c = M[i][j];
            for (int h = 0; h < n; h++){
                for (int k = 0; k < n; k++)
                    if (c == M[i][h] + M[k][j])
                        ok = 1;
            }
            if (ok == 0 && M[i][j] != 1){
                return false;
            }
        }
    }
    return true;
}
int main(){
    vector<vector<int>> matrix = { { 1, 1, 2 }, { 2, 3, 1 }, { 6, 4, 1 } };
    cout << solve(matrix) << endl;
}

ইনপুট

{ { 1, 1, 2 }, { 2, 3, 1 }, { 6, 4, 1 } }

আউটপুট

1

  1. C++-এ একটি ট্রি গ্রাফ লিনিয়ার কিনা তা যাচাই করা

  2. C++-এ একটি অ্যারে পেয়ারওয়াইজ সর্টেড (pairwise sorted) কিনা তা যাচাই করা

  3. C++-এ একটি ম্যাট্রিক্স বাইনারি ম্যাট্রিক্স কিনা তা যাচাই করার প্রোগ্রাম

  4. C++ প্রোগ্রাম: বাইনারি ট্রি AVL ট্রি কিনা যাচাই