কম্পিউটার

পাইথনে প্রদত্ত সারি এবং কলামের যোগফল বৈধ ম্যাট্রিক্স খুঁজে বের করার প্রোগ্রাম


ধরুন আমাদের কাছে দুটি অ্যারে আছে rowSum এবং colSum যেখানে নন-নেগেটিভ মান রয়েছে যেখানে rowSum[i]-এ ith সারির উপাদানগুলির যোগফল রয়েছে এবং colSum[j]-এ একটি 2D ম্যাট্রিক্সের jth কলামের উপাদানগুলির যোগফল রয়েছে। আমাদেরকে সাইজের অ-নেতিবাচক মানের (rowSum size x colSum size) সহ যে কোনো ম্যাট্রিক্স খুঁজে বের করতে হবে যা প্রদত্ত rowSum এবং colSum মানকে সন্তুষ্ট করে।

সুতরাং, ইনপুট যদি rowSum =[13,14,12] colSum =[9,13,17] এর মত হয়, তাহলে আউটপুট হবে

9 4 0
0 9 5
0 0 12

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

  • ম্যাট্রিক্স :=খালি ম্যাট্রিক্স তৈরি করুন
  • পরিদর্শন করেছেন :=একটি নতুন সেট
  • একটি ফাংশন ন্যূনতম() সংজ্ঞায়িত করুন। এটি r,c
  • লাগবে
  • মিনিট_টোটাল :=ইনফিনিটি
  • টাইপ :=ফাঁকা স্ট্রিং
  • আমি 0 থেকে r - 1 এর পরিসরে, কর
    • যদি r[i]
    • সূচক :=i
    • টাইপ :='সারি'
    • মিনিট_টোটাল :=r[i]
  • আমি 0 থেকে c - 1 এর পরিসরের জন্য, কর
    • যদি c[i]
    • মিনিট_টোটাল :=c[i]
    • টাইপ :='col'
    • সূচক :=i
  • যদি টাইপ 'সারি' এর মত হয়, তাহলে
    • r[index] :=অসীম
    • আমি 0 থেকে c - 1 এর পরিসরে,
        করুন
      • যদি c[i] অসীম এবং c[i]>=মিনিট_মোট সমান না হয়, তাহলে
        • c[i] :=c[i] - min_total
        • ম্যাট্রিক্স[ইনডেক্স, i] :=মিনিট_মোট
        • লুপ থেকে বেরিয়ে আসুন
  • যদি টাইপ 'col' এর মত হয়, তাহলে
    • c[index] :=অসীম
    • আমি 0 থেকে r - 1 এর পরিসরের জন্য, কর
      • যদি r[i] অসীম এবং r[i]>=মিনিট_মোট সমান না হয়, তাহলে
        • r[i] :=r[i] - মিনিট_মোট
        • ম্যাট্রিক্স[i, সূচক] :=মিনিট_মোট
        • লুপ থেকে বেরিয়ে আসুন
  • পরিদর্শনে জোড়া (সূচী, প্রকার) সন্নিবেশ করান
  • প্রধান পদ্ধতি থেকে নিম্নলিখিতগুলি করুন -
  • যদিও পরিদর্শনের আকার r +len(c) এর আকারের সমান নয়, করুন
  • সর্বনিম্ন(r, c)
  • রিটার্ন ম্যাট্রিক্স
  • উদাহরণ

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

    def solve(r, c):
       matrix = [[0]*len(c) for _ in range(len(r))]
       visited = set()
    
       def minimum(r,c):
          min_total = float('inf')
       
          type = ''
          for i in range(len(r)):
             if(r[i] < min_total):
                index = i
                type = 'row'
                min_total = r[i]
    
          for i in range(len(c)):
             if(c[i] < min_total):
                min_total = c[i]
                type = 'col'
                index = i
    
          if(type == 'row'):
             r[index] = float('inf')
    
             for i in range(len(c)):
                if(c[i] != float('inf') and c[i] >= min_total):
                   c[i] -= min_total
                   matrix[index][i] = min_total
                   break
    
          if(type == 'col'):
             c[index] = float('inf')
             for i in range(len(r)):
                if(r[i] != float('inf') and r[i] >= min_total):
                   r[i] -= min_total
                   matrix[i][index] = min_total
                   break
    
          visited.add((index,type))
    
       while len(visited) != len(r)+len(c):
          minimum(r,c)
    
       return matrix
    
    rowSum = [13,14,12]
    colSum = [9,13,17]
    print(solve(rowSum, colSum))

    ইনপুট

    [13,14,12], [9,13,17]

    আউটপুট

    [[9, 4, 0], [0, 9, 5], [0, 0, 12]]

    1. পাইথনে একটি সারিতে বৃহত্তম উপাদান এবং একটি কলাম দেওয়া হলে আসল ম্যাট্রিক্স খুঁজুন

    2. পাইথনে প্রদত্ত ঘরের সারি এবং-বা কলামের উপাদানগুলি ছাড়া একটি ম্যাট্রিক্সের সমস্ত উপাদানের যোগফল খুঁজুন

    3. পাইথন প্রোগ্রামে একটি ম্যাট্রিক্সের স্থানান্তর খুঁজুন

    4. একটি ম্যাট্রিক্সের স্থানান্তর খুঁজে পেতে পাইথন প্রোগ্রাম