কম্পিউটার

বন্যা পূরণ অ্যালগরিদম


একটি ম্যাট্রিক্স দেওয়া আছে; ম্যাট্রিক্স একটি পর্দা প্রতিনিধিত্ব করছে. পর্দার প্রতিটি উপাদান (i, j) একটি পিক্সেল হিসাবে চিহ্নিত করা হয়, সেই পিক্সেলের রঙ বিভিন্ন সংখ্যা দিয়ে চিহ্নিত করা হয়। এই অ্যালগরিদমে, পিক্সেলগুলি নতুন রঙে পূর্ণ হবে যখন এটি ইতিমধ্যে নির্বাচিত পূর্ববর্তী রঙে থাকবে। আগের রঙটি আগের রঙ না হলে সেই পিক্সেলটি পূর্ণ হবে না। একটি পিক্সেল পূরণ করার পরে, এটি একই কাজ করার জন্য তার উপরে, নীচে, বাম এবং ডান পিক্সেলগুলি পরীক্ষা করবে৷

ধারণাটি সত্যিই সহজ, প্রথমে, আমরা পরীক্ষা করি যে নির্বাচিত অবস্থানটি আগের রঙের সাথে রঙিন কিনা, না, অ্যালগরিদম কাজ করবে না। অন্যথায়, এটি সেই পিক্সেলটিকে নতুন রঙ দিয়ে পূর্ণ করবে এবং তার চারটি প্রতিবেশীর জন্য পুনরাবৃত্তি করবে৷

ইনপুট এবং আউটপুট

ইনপুট:স্ক্রিন ম্যাট্রিক্স:1 1 1 1 1 1 1 11 1 1 1 1 0 01 0 0 1 1 0 1 11 2 2 2 2 0 1 01 1 1 2 2 0 1 01 1 2 2 2 01 1 1 1 1 2 1 11 1 1 1 2 2 1আউটপুট:বন্যা ভরাটের পরে স্ক্রীন ম্যাট্রিক্স1 1 1 1 1 1 1 1 1 1 1 1 1 0 01 0 0 1 1 0 1 11 31 31 30 3 1 1 3 3 0 1 01 1 1 3 3 3 01 1 1 1 1 3 1 11 1 1 1 3 3 1 

অ্যালগরিদম

fillScreen(x, y, prevColor, newColor)

ইনপুট: শুরু করার জন্য (x,y) স্থানাঙ্ক, আগের রঙ এবং নতুন রঙ।

আউটপুট - পূর্ববর্তী থেকে নতুন রঙ পরিবর্তন করার পরে স্ক্রীন, যদি সম্ভব হয়।

শুরু করুন যদি (x, y) স্ক্রীন রেঞ্জের মধ্যে না থাকে, তারপরে যদি (x, y) ≠ prevColor এর রঙ হয়, তাহলে স্ক্রীন ফেরত দিন [x, y] :=newColor fillScreen(x+1, y, prevColor, newColor) ফিলস্ক্রিন(x-1, y, prevColor, newColor) ফিলস্ক্রিন(x, y+1, prevColor, newColor) fillScreen(x, y-1, prevColor, newColor)শেষ

উদাহরণ

#include#define M 8#define N 8 useing namespace std;int screen[M][N] ={ //স্ক্রীনের মাত্রা এবং রং {1, 1, 1, 1, 1, 1, 1 , 1}, {1, 1, 1, 1, 1, 1, 0, 0}, {1, 0, 0, 1, 1, 0, 1, 1}, {1, 2, 2, 2, 2 , 0, 1, 0}, {1, 1, 1, 2, 2, 0, 1, 0}, {1, 1, 1, 2, 2, 2, 2, 0}, {1, 1, 1 , 1, 1, 2, 1, 1}, {1, 1, 1, 1, 1, 2, 2, 1}}; void fillScreen(int x, int y, int prevColor, int newColor) { //প্রতিস্থাপন (x,y) এর আগের রঙ, নতুন রঙ সহ যদি (x <0 || x>=M || y <0 || y>=N) // যখন পয়েন্ট স্ক্রীন রিটার্ন অতিক্রম করে; যদি (screen[x][y] !=prevColor) //বিন্দু(x,y) prevColor ধারণ না করলে, কিছুই ফেরত দেবেন না; পর্দা[x][y] =নতুন রঙ; //কালার ফিলস্ক্রিন আপডেট করুন(x+1, y, prevColor, newColor); // (x,y) ফিলস্ক্রিনের ডানদিকে(x-1, y, prevColor, newColor); // (x,y) ফিলস্ক্রিনের বাম দিকে(x, y+1, prevColor, newColor); // (x,y) ফিলস্ক্রিন (x, y-1, prevColor, newColor) এর শীর্ষের জন্য; //এর জন্য (x,y)}অকার্যকর ফ্লাডফিল(int x, int y, int newColor) { int prevColor =screen[x][y]; // নতুন রঙ ফিলস্ক্রিন (x, y, prevColor, newColor) দিয়ে প্রতিস্থাপন করার আগে রঙ নিন;}int main() { int x =4, y =4, newColor =3; cout <<"আগের পর্দা:"< 

আউটপুট

<পূর্ব>আগের স্ক্রিন1 1 1 1 1 1 11 1 1 1 1 1 0 01 0 0 1 1 0 1 11 2 2 2 2 0 1 01 1 1 2 2 0 1 01 1 2 2 1 10 1 2 1 11 1 1 1 1 2 2 1আপডেট করা স্ক্রিন:1 1 1 1 1 1 1 1 1 1 1 1 1 0 01 0 0 1 1 0 1 11 3 3 3 3 0 1 01 1 1 13 1 3 3 3 01 1 1 1 3 1 11 1 1 1 3 3 1

  1. ফোর্ড ফুলকারসন অ্যালগরিদম

  2. ফ্লয়েড ওয়ারশাল অ্যালগরিদম

  3. সি গ্রাফিক্স ব্যবহার করে ফ্লাড ফিল অ্যালগরিদম

  4. অ্যালগরিদম স্পেসিফিকেশন-ডাটা স্ট্রাকচারের ভূমিকা