Skip to main content

[ UVa ] 11244 - Counting Stars

  • আমরা আমাদের sky কে শুরু থেকে রিড করা শুরু করবো । 
  • আমরা যদি কোন পজিশনে ' * ' পাই তবে সেখানে DFS / BFS চালায়া দিবে এবং ' * ' এর পরিবর্তে ' . ' সেট করে দিব । 
  • DFS / BFS ফাংশনের মধ্যে Count করবে সেখানে কয়টা Adjacent স্টার আছে । 
  • এর পর Count এর মান কম্পেয়ার করে দেখব সেটা ১ কি না 
  • যদি ১ হয় । তার মানে ওটা একটা স্টার । এবং আমরা এই স্টার Count করবো । 
  • আর যদি ১ এর থেকে বেশি হয় তবে সেটা স্টার না অন্য কোন বস্তু [ like moon, comet, sun or UFOs ]  হতে পারে । তাই সেটা স্কিপ করবো । 
কোড :
/**
* Problem : 11244 - Counting Stars
* Verdict : Accepted.
* Write : Mehadi Hasann Menon.
* Date : 25.12.16.
**/
#include <iostream>
#include <cstdio>
const int mx = 105;
char sky[mx][mx];
int r, c;
int dr[] = {-1, -1, 0, 1, 1, 1, 0, -1};
int dc[] = {0, 1, 1, 1, 0, -1, -1, -1};
int ans;
void dfs_count_star(int row, int col)
{
if(row < 0 || row >= r || col < 0 || col >= c || sky[row][col] == '.')
{
return ;
}
sky[row][col] = '.';
ans += 1;
for(int i = 0; i < 8; i++)
{
int new_row = row + dr[i];
int new_col = col + dc[i];
dfs_count_star(new_row, new_col);
}
}
int main()
{
freopen("input.txt", "r+", stdin);
freopen("output.txt", "r+", stdout);
while(scanf("%d %d", &r, &c) && r != 0 && c != 0)
{
for(int i = 0; i < r; i++)
{
scanf("%s", sky[i]);
}
int count_stars = 0;
for(int i = 0; i < r; i++)
{
for(int j = 0; j < c; j++)
{
// if sky is not faka then search for star :P
if(sky[i][j] != '.')
{
dfs_count_star(i, j);
if(ans == 1)
{
count_stars += 1;
}
ans = 0;
}
}
}
printf("%d\n", count_stars);
}
return 0;
}
view raw 11244.cpp hosted with ❤ by GitHub

হ্যাপি কোডিং :)

Comments

Popular posts from this blog

উবুন্টুতে রুট পাসওয়ার্ড ভুলে তা রিকভার করার উপায় ।

যদি কেউ রুট পাসওয়ার্ড ভুলে যান তাহলে নিচের কাজ গুলো করে নতুন পাসওয়ার্ড সেট করতে পারবেন: প্রথমে পিসি রিস্টার্ট দিন । দিয়ে UP/DOWN করে kernel version সিলেক্ট করে e চাপুন । ব্ল্যাক Screen আসবে এবার একটা Space দিয়ে লিখুন “Single” [ Enter ] এরপর b চাপুন ফলাফল : লিনাক্সের Single user Mood এ চলে আসছেন । এখন লিখুন passwd root [ Enter ] এখন নতুন পাসওয়ার্ড খানা টাইপ করেন [ এন্টার ] আবার টাইপ করেন [ এন্টার ] কাজ শেষ , এবার reboot টাইপ করেন । এখন নতুন পাসওয়ার্ড দিয়ে লগইন করেন। পুনশ্চ : যদি আপনার উইন্ডোজ এর সাথে ডুয়েল বুট করা থাকে তবে এই প্রক্রিয়া কাজ করবে না ।

Fix The BIOS in this system is not fully ACPI compliant in Windows 7

এই সমস্যা সমাধান করার জন্য আপনি নিচের ধাপ গুলো অনুসরণ করুন। ধাপ ১ :  আপানর  কম্পিউটার এ উইন্ডোজ এর ডিস্ক থেকে বুট করুন । নীচের মত উইন্ডো আসলে Shift + F10 চাপুন । এর ফলে কমান্ড প্রম্প্ট ওপেন হবে। ধাপ ২ : এখন CMD তে নিচের কমান্ড গুলি ধারবাহিক ভাবে লিখুন C: bootrec /FixMbr bootrec /FixBoot bootrec /RebuildBcd exit  এখানে  C হলো যে ড্রাইভ এ উইন্ডোজ দেয়া আছে।  আপনার যদি অন্য কোনো ড্রাইভ ( D, E, F, ..... ) এ উইন্ডোজ দেয়া থাকে তবে আপনাকে C এর জায়গায় সেই ড্রাইভ এর নাম লিখতে হবে।  উপরের সব কমান্ড যদি সঠিক ভাবে বিল্ড হয় তবে আপনি আপনার কম্পিউটার রিস্টার্ট দিন।  দেখবেন আপনার সমস্যা সমাধান হয়ে গেছে :D