Skip to main content

[ UVa ] 750 - 8 Queens Chess Problem

  • আমরা এই সমস্যা তে যদি প্রথমেরই ৮ টা কুইনের জন্য সাম্ভাব সবগুলি অবস্থা হিসাব করে রাখি এবং পরে যেগুলো আমাদের কে প্রিন্ট করতে বলতেছে সেগুলো প্রিন্ট করি তবে খুব কম সময়ের মধ্যেই আমাদের প্রোগ্রাম রান করবে । 
কোড :
/**
* Problem : 750 - 8 Queens Chess Problem.
* Verdict : Accepted.
* Writer : Mehadi Hasan Menon.
* Time : 0.00 ms.
**/
#include <iostream>
using namespace std;
int column[20], diagonal1[40], diagonal2[40], queen[20];
int given_row, given_col, cnt;
int ans[93][8];
int r = 1;
void n_queen(int at, int n)
{
if(at == n + 1)
{
for(int i = 1; i <= n; i++) {
ans[r][i] = queen[i];
}
r += 1;
return ;
}
for(int i = 1; i <= n; i++)
{
if(column[i] || diagonal1[i + at] || diagonal2[i - at + n])
{
// we have a queen in column || diagonal1 || diagonal2
// so we can't put a new queen at this position
continue;
}
queen[at] = i;
column[i] = diagonal1[i + at] = diagonal2[i - at + n] = 1; // have a queen.
n_queen(at + 1, n);
// backtrack ;
column[i] = diagonal1[i + at] = diagonal2[i - at + n] = 0; // reset.
}
}
int main()
{
freopen("input.txt", "r+", stdin);
int tc;
// generate all possible square position;
n_queen(1, 8);
cin >> tc;
for(int i = 0; i < tc; i++)
{
cin >> given_row >> given_col;
if(i > 0) {
printf("\n");
}
// process the output and print as described in problem description;
cout << "SOLN COLUMN" << endl;
cout << " # 1 2 3 4 5 6 7 8" << endl;
cout << endl;
cnt = 1;
for(int k = 1; k < 93; k++)
{
// if this is the desire position then print this row;
if(ans[k][given_col] == given_row)
{
printf("%2d ", cnt++);
for(int l = 1; l <= 8; l++)
{
printf(" %d", ans[k][l]);
}
printf("\n");
}
}
cnt = 1;
}
return 0;
}
view raw 750.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