Monday, 17 April 2017

UVA 146 Solve

"UVA 146" প্রব্লেমটা একটা পারমুটেশন প্রব্লেম। এটা সল্ভ করার জন্য next_permutation সম্পর্কে ধারণা থাকতে হবে(next_parmutaion).  প্রথমে আমরা ডান থেকে বাম দিকে চেক করব, যদি ডান দিকে কোন বড় উপাদান না পাই তাহলে " no successor" প্রিন্ট করব. আর যদি পাই তাহলে ন্যূনতম বড় উপাদানের সাথে এইটা পরিবর্তন করবো এবং বাকী উপাদান গুলো সর্ট করব


যেমনঃ ১, ২,৩,৩  এই সিকুয়েন্স টা হবে ১,৩,২,৩

 এইটা কিভাবে করা হল???😲

প্রথমে সবচেয়ে বড় উপাদান ৩ এর সাথে ২ এর তুলনা করা হল (২<৩) পরে জাস্ট [২,৩] কে সর্ট করা হইছে।

এখানে আমি সি++ ব্যাবহার করে প্রব্লেমটা সল্ভ করছি।


#include<iostream>
#include<algorithm>
#include<bits/stdc++.h>
using namespace std;
int main()
{
    char s[50];
    while(1)
    {
        cin>>s;
        if(s[0]=='#')
            break;
            else{
               int l=strlen(s);
               if(next_permutation(s,s+l))
               {
                   cout<<s<<endl;
               }
               else{
                    cout<<"No Successor"<<endl;
                   }
              }
    }
    return 0;
}

No comments:

Post a Comment