মঙ্গলবার, ১৭ এপ্রিল, ২০১২

Solution And Code Of Problem -1116 Light Online Judge

        আসলে এই সমস্যাটিতে তোমার কাছে জানতে চাওয়া হয়েছে যে তুমি একটি সংখ্যাকে প্রিথক করতে পার কিনা । যেমনঃ ধর ১২ সংখ্যাটিকে জোড় ও বিজোড় এ আলাদা করলে পাওয়া যায় ৩ এবং ৪ ।  কিন্তু যদি সংখ্যাটি বিজোড় হয় তখন ? খুব Simple . তখন সংখ্যাটিকে পৃথক করা যাবে না । ফলে Answer হবে Impossible . যেমন তুমি ৫ এর কথা-ই চিন্তা করে দেখ ।
        বুজতেই পেরেছ সমস্যাটি খুব-ই সোজা। আশা করি এর code তোমরা নিজে নিজেই লিখে ফেলতে পারবে । তারপর ও যদি দরকার হয় তাহলে নিচের Code এ এক পলক চোখ বুলিয়ে নিতে পার ।  
     
#include<iostream>
#include<string>
#include<cstdio>
using namespace std;

int max(int a,int b,int c)
{
    int i,max=a;
    if(max<b)
        max=b;
    if(max<c)
        max=c;
    return max;
}

int findLCS( string S1,string S2 ,string S3 )
{
    int i,j,k,sz1=S1.length(),sz2=S2.length(),sz3=S3.length();
    int LCS[21][21][21];

    for( i=1;i<=sz1;i++ )
        for( j=1;j<=sz2;j++)
            for( k=1;k<=sz3;k++){

               if( S1[i-1]==S2[j-1] && S2[j-1]==S3[k-1] )
                  LCS[i][j][k] = LCS[i-1][j-1][k-1] + 1 ;
                else
                  LCS[i][j][k] = max( LCS[i-1][j][k] , LCS[i][j-1][k] , LCS[ i][j][k-1] );

            }


    return LCS[sz1][sz2][sz3];
}

int main()
{
    string a,b,c,d;
    int i,test,temp;
    cin>>test;
    for(i=1;i<=test;i++)
    {
        cin.ignore();
        cin>>a>>b>>c;
        cin.ignore();
        temp=findLCS(a,b,c);
        printf("Case %d: %d\n",i,temp);
    }
    return 0;
}

কোন মন্তব্য নেই:

একটি মন্তব্য পোস্ট করুন