আসলে এই সমস্যাটিতে তোমার কাছে জানতে চাওয়া হয়েছে যে তুমি একটি সংখ্যাকে প্রিথক করতে পার কিনা । যেমনঃ ধর ১২ সংখ্যাটিকে জোড় ও বিজোড় এ আলাদা করলে পাওয়া যায় ৩ এবং ৪ । কিন্তু যদি সংখ্যাটি বিজোড় হয় তখন ? খুব Simple . তখন সংখ্যাটিকে পৃথক করা যাবে না । ফলে Answer হবে Impossible . যেমন তুমি ৫ এর কথা-ই চিন্তা করে দেখ ।
বুজতেই পেরেছ সমস্যাটি খুব-ই সোজা। আশা করি এর code তোমরা নিজে নিজেই লিখে ফেলতে পারবে । তারপর ও যদি দরকার হয় তাহলে নিচের Code এ এক পলক চোখ বুলিয়ে নিতে পার ।
বুজতেই পেরেছ সমস্যাটি খুব-ই সোজা। আশা করি এর 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;
}
কোন মন্তব্য নেই:
একটি মন্তব্য পোস্ট করুন