কম্পিউটার

পাইথনে একটি 2D ম্যাট্রিক্স II অনুসন্ধান করুন


ধরুন আমাদের একটি m x n ম্যাট্রিক্স আছে। আমাদের একটি দক্ষ অ্যালগরিদম লিখতে হবে যা সেই ম্যাট্রিক্সে একটি মান অনুসন্ধান করে। এই ম্যাট্রিক্সের নিম্নলিখিত বৈশিষ্ট্য রয়েছে -

  • প্রতিটি সারির পূর্ণসংখ্যা বাম থেকে ডানে আরোহীতে সাজানো হয়।
  • প্রতিটি কলামের পূর্ণসংখ্যাগুলি উপরে থেকে নীচের দিকে আরোহীতে সাজানো হয়৷

তাই ম্যাট্রিক্স যদি −

এর মত হয় ৷ ৷ ৷ ৷ ৷
1 47 11 15
2 5 8 12 19
3 6 9 1622
10 13 1417 24
18 21 23 2630

যদি টার্গেট 5 হয়, তাহলে true রিটার্ন করুন, যদি টার্গেট 20 হয়, তাহলে মিথ্যা দিন

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

  • len :=কলামের সংখ্যা, c1 :=0, c2 :=len – 1
  • যদিও সত্য
    • যদি ম্যাট্রিক্স[c1, c2] =টার্গেট হয়, তাহলে true রিটার্ন করুন
    • অন্যথায় ম্যাট্রিক্স[c1, c2]> টার্গেট, তারপর c2 :=c2 – 1, চালিয়ে যান
    • c1 :=c1 + 1
    • যদি c1>=সারি গণনা বা c2 <0 হয়, তাহলে মিথ্যা ফেরত দিন
    • মিথ্যে ফেরত দিন

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

উদাহরণ

শ্রেণীর সমাধান:def searchMatrix(self, matrix, target):try:length =len(matrix[0]) counter1, counter2 =0, length-1 while True:if matrix[counter1][counter2] ==target :রিটার্ন ট্রু এলিফ ম্যাট্রিক্স[কাউন্টার1][কাউন্টার2]>টার্গেট:কাউন্টার2-=1 চালিয়ে যান কাউন্টার1 =কাউন্টার1 + 1 যদি কাউন্টার1>=লেন(ম্যাট্রিক্স) বা কাউন্টার2<0:রিটার্ন ফলস ব্যতীত:রিটার্ন ফলসওব1 =সমাধান()প্রিন্ট(ob1) .searchMatrix([[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,13,14,17,24 ],[18,21,23,26,30]], 5))

ইনপুট

<পূর্ব>[[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,13,14,17,24 ],[18,21,23,26,30]]5

আউটপুট

সত্য

  1. পাইথনে একটি ফাংশন সংজ্ঞায়িত করা

  2. পাইথনে বাইনারি অনুসন্ধান (দ্বিভাগ)

  3. পাইথনে ম্যাট্রিক্স শুরু করুন

  4. পাইথনে একটি ম্যাট্রিক্স স্থানান্তর?