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