কম্পিউটার

পাইথনে সমস্ত সেগমেন্টের XOR কে শূন্যের সমান করার প্রোগ্রাম


ধরুন আমাদের nums নামে একটি অ্যারে আছে এবং আরেকটি মান k। একটি সেগমেন্টের XOR [বাম, ডান] (বাম <=ডান) হল সেই সমস্ত উপাদানগুলির XOR যার সূচকগুলি বাম এবং ডানের মধ্যে রয়েছে (সমেত)।

অ্যারেতে পরিবর্তন করার জন্য আমাদের ন্যূনতম সংখ্যক উপাদান খুঁজে বের করতে হবে যাতে k আকারের সমস্ত অংশের XOR শূন্যের সমান হয়।

সুতরাং, ইনপুট যদি nums =[3,4,5,2,1,7,3,4,7], k =3 এর মত হয়, তাহলে আউটপুট হবে 3 কারণ আমরা সূচক 2, 3-এ উপাদানগুলি পরিবর্তন করতে পারি, অ্যারে তৈরি করতে 4 [3,4,7,3,4,7,3,4,7]।

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

  • সীমা :=1024

  • temp :=একটি অ্যারে তৈরি করুন যার আকার LIMIT x k, এবং 0

    দিয়ে পূরণ করুন
  • প্রতিটি সূচকের জন্য i এবং মান x সংখ্যায়, করুন

    • temp[i mod k, x] :=temp[i mod k, x] + 1

  • dp :=আকারের একটি অ্যারে LIMIT এবং -2000 দিয়ে পূরণ করুন

  • dp[0] :=0

  • তাপমাত্রায় প্রতিটি সারির জন্য, করুন

    • maxprev :=সর্বাধিক dp

    • new_dp :=আকারের একটি অ্যারে LIMIT এবং maxprev দিয়ে পূরণ করুন

    • প্রতিটি সূচক i এবং মান cnt সারির জন্য, করুন

      • যদি cnt> 0, তাহলে

        • প্রতিটি সূচকের জন্য j এবং dp-এ আগের মান, করুন

          • new_dp[i XOR j] :=সর্বাধিক new_dp[i XOR j] এবং prev+cnt

    • dp :=new_dp

  • সংখ্যার রিটার্ন সাইজ - new_dp[0>

উদাহরণ

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

def solve(nums, k):LIMIT =2**10 temp =[[0 for _ range(LIMIT)] এর জন্য _ in range(k)] এর জন্য i,x in enumerate(nums):temp[ i%k][x] +=1 dp =[-2000 এর জন্য _ রেঞ্জ(LIMIT)] dp[0] =0 টেম্পের সারির জন্য:maxprev =max(dp) new_dp =[maxprev _ এর মধ্যে _ এর মধ্যে(LIMIT) )] i,cnt in enumerate(সারিতে):যদি cnt> 0:j-এর জন্য, গণনা (dp) তে prev:new_dp[i^j] =max(new_dp[i^j], prev+cnt) dp =new_dp রিটার্ন লেন(সংখ্যা) - new_dp[0]সংখ্যা =[3,4,5,2,1,7,3,4,7]k =3প্রিন্ট(সল্ভ(সংখ্যা, কে))

ইনপুট

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

আউটপুট

-9

  1. পাইথনে ভারতীয় পতাকা বানানোর প্রোগ্রাম

  2. পাইথনে সমস্ত অ্যারে উপাদানকে সমান করতে প্রয়োজনীয় ক্রিয়াকলাপগুলির সংখ্যা৷

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

  4. পাইথন প্রোগ্রামের তালিকায় সব সংখ্যা গুন করতে হবে?