কীভাবে একটি অ্যারেতে দুটি স্ট্যাক প্রয়োগ করা যায়?


15

আমি এটি শুরু করে বলতে চাই যে এটি কোনও হোম ওয়ার্কের প্রশ্ন নয়। আমি অ্যালগরিদমগুলির পরিচিতি পড়ছি - একটি ভাল প্রোগ্রামার হওয়ার জন্য বিখ্যাত সিএলআরএস পাঠ্য। আমি নিজেই বইটিতে প্রদত্ত সমস্যা এবং অনুশীলনগুলি সমাধান করার চেষ্টা করছি।

আমি সিএলআরএস দ্বিতীয় সংস্করণ থেকে অধ্যায় 10 প্রাথমিক ডেটা স্ট্রাকচার থেকে অধ্যায় 10.1-2 সমাধানের চেষ্টা করছি । এখানে এর রাজ্যগুলি কি:

একটি অ্যারে এ [1..n] তে দুটি স্ট্যাক কীভাবে প্রয়োগ করা যায় তা ব্যাখ্যা করুন যাতে উভয় স্ট্যাকের উপাদানগুলির একসাথে এন না হলে স্ট্যাক ওভারফ্লো হয় না । পুশ এবং পিওপি অপারেশনগুলি ও (1) সময়ে চালানো উচিত ।

আমি এখন পর্যন্ত যে সমাধানটি নিয়ে এসেছি তা হ'ল:

অ্যারে এ [1..n] দুটি স্ট্যাক প্রয়োগ করুন: এস 1 [1..i] এবং এস 2 [i..n]

জন্য পুশ-S1 এবং পুশ-S2 অপারেশন, যদি স্ট্যাকের 'পূর্ণ' তাহলে মধ্যে উপাদানের ঠেলাঠেলি শুরু অন্যান্য স্ট্যাক (যেমন। যদি স্ট্যাকের S1 পূর্ণ একটি নতুন উপাদান মধ্যে push করা চেষ্টা করছে তারপর মধ্যে যে উপাদান ধাক্কা হয় স্ট্যাক এস 2 এবং তদ্বিপরীত)।

এই পদ্ধতির সমস্যাটি হ'ল আমি পিওপি-এস 1 বা পিওপি-এস 2 নির্ভরযোগ্যভাবে সক্ষম করতে পারব না কারণ কোন উপাদানটি কোন স্ট্যাকের অন্তর্ভুক্ত তা 'মনে রাখার' উপায় নেই। যদি স্ট্যাকের উপাদানগুলি (কী, মান) জোড়া হয়, মূলটি স্ট্যাক নম্বর হয় তবে একটি উপাদান পপ করতে হলে আমাকে সবচেয়ে খারাপ অবস্থায় i বা (ni) বার অনুসন্ধান করতে হবে - যা O (n ) হবে ) (আমি এখানে ভুল হলে আমাকে সংশোধন করতে নির্দ্বিধায়), যা O (1) হবে না ।

আমি বেশ কিছুদিন ধরেই প্রশ্নটিতে মাথা ঠাটিয়ে যাচ্ছি। আমি কি সঠিক পথে রয়েছি? এই সমস্যা সমাধানের জন্য কেউ কি আমার সম্ভাব্য পয়েন্টার দিতে পারেন?

সাধারণভাবে, এই সমস্যাগুলি সম্পর্কে আমার কীভাবে 'চিন্তা' করা উচিত? বা কেবল সত্যিকারের বুদ্ধিমান লোকেরা কি এই ধরণের সমস্যাগুলি সমাধান করতে পারেন? এইগুলির (যেমন অভিজ্ঞতা অর্জন) এর মতো সমস্যাগুলি মোকাবেলা / সমাধান করা কি আমাকে আরও উন্নত করতে সহায়তা করবে?

আমি আলোকিত হওয়ার অপেক্ষায় রয়েছি।


3
"এগুলির (যেমন অভিজ্ঞতা অর্জন) এর মতো সমস্যাগুলি মোকাবেলা / সমাধান করা কি আমাকে আরও উন্নত করতে সহায়তা করবে?" আমার অভিজ্ঞতা, এটি অবশ্যই ক্ষেত্রে। যদি অন্য কিছু না হয় তবে আপনি সমস্যাটি সম্পর্কে একাধিক উপায়ে চিন্তাভাবনা করতে পারেন এবং এর মাধ্যমেই কেবল আরও অন্তর্দৃষ্টি তৈরি হবে। যেমনটি আমাকে সম্প্রতি বলা হয়েছিল: ভাল ধারণা রাখার সর্বোত্তম উপায় হ'ল বহু ধারণা have
জি বাচ

উত্তর:


7

যুওয়াল যা বলেছিল তা ছাড়াও আরেকটি ইঙ্গিত: এটি স্ট্যাকগুলি অ্যারেগুলিতে একটি নির্দিষ্ট উপায়ে স্থাপন করতে এবং সেই অনুযায়ী তাদের বৃদ্ধির দিকটি ঠিক করতে সহায়তা করে। তাদের একই দিকে বাড়তে হবে না।


5

এখানে কিছু ইঙ্গিত রয়েছে:

  1. একটি স্ট্যাকের "উপরে" এবং অন্যটি "ডাউন" হওয়া উচিত।
  2. কোন উপাদানটি কোন স্ট্যাকের সাথে সম্পর্কিত তা মনে রাখার কোনও উপায় নেই - আপনাকে এ জাতীয় স্টাফ সাহায্য করতে অতিরিক্ত ভেরিয়েবল ব্যবহার করার অনুমতি দেওয়া হয়। (এটি প্রথম ইঙ্গিত দ্বারা প্রস্তাবিত সমাধানটি আরও অর্থবোধ করে))

1

প্রথম স্ট্যাকটি 1 থেকে শুরু হয় এবং n এর দিকে বড় হয়, যখন দ্বিতীয়টি ফর্ম এন শুরু হয় এবং নীচে নেমে আসে 1 an


1

এই পদ্ধতিটি উপলব্ধ স্থানটি দক্ষতার সাথে ব্যবহার করে। আরারে [] তে জায়গা উপলব্ধ থাকলে এটি একটি উপচে পড়ার কারণ নয়। আর্টের দুটি চরম কোণ থেকে দুটি স্ট্যাক শুরু করার ধারণা। স্ট্যাক 1 বামতম উপাদান থেকে শুরু হয়, স্ট্যাক 1-এ প্রথম উপাদানটি সূচক 0 এ পুশ করা হয় স্ট্যাক 2 ডানদিকের কোণ থেকে শুরু হয়, স্ট্যাক 2-এ প্রথম উপাদানটি সূচক (এন -1) এ পুশ করা হয়। উভয় স্ট্যাকগুলি বিপরীত দিকে বড় হয় (বা সঙ্কুচিত)। ওভারফ্লো পরীক্ষা করার জন্য, আমাদের যাচাই করা দরকার তা হ'ল উভয় স্ট্যাকের শীর্ষ উপাদানগুলির মধ্যে স্থান।


-1

আমি অন্য একটি সমাধান চিন্তা। যদি আমরা অ্যারেটিকে অর্ধেক করে (বা যতটা সম্ভব অ্যারের বিজোড় দৈর্ঘ্য হয়) এবং প্রথম উপাদানটিকে প্রথম স্ট্যাকের মধ্যে নিয়ে যায় এবং দ্বিতীয় উপাদানটি দ্বিতীয় স্ট্যাকের মধ্যে যায়। পপিংয়ের সময় আমরা এই পদক্ষেপগুলি আবার সরিয়ে নিতে পারি। যাইহোক, এইভাবে প্রয়োগ করে এটি কোনও স্ট্যাকের নীতি লঙ্ঘন করবে?


এনএনএন/2

-2

কিছু ইঙ্গিত

একটি অ্যারে তৈরি করুন

বিজোড় সূচক সহ অ্যারের উপাদানগুলি স্ট্যাক 1 এর জন্য

এমনকি সূচক সহ অ্যারের উপাদানগুলি স্ট্যাক 2 এর জন্য

এখন আপনি উভয় স্ট্যাক বাম থেকে ডান দিকে বাড়িয়ে নিতে পারেন

উভয় স্ট্যাকের শীর্ষ অবস্থান বজায় রাখার জন্য কেবল ভেরিয়েবল রাখুন। আপনাকে অ্যারেটি অনুসন্ধান করতে হবে না।

এবং যদি স্ট্যাক 1 পূর্ণ হয়ে যায় যখন স্ট্যাক 2 খালি থাকে আপনি কিছু ভেরিয়েবল বজায় রেখে স্ট্যাক 2-এ অতিরিক্ত স্ট্যাক 1 উপাদানগুলির জন্য ট্র্যাক রাখতে পারেন


এটি খুব সংশ্লেষিত। বিদ্যমান উত্তরগুলি ইতিমধ্যে সমস্যা সমাধানের অনেক সহজ উপায় দেয়
ডেভিড রিচার্বি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.