I've written a piece a code in C++ which tries to change some characters in String 1 and if matches with String 2 with in the specified number of changes, will print YES else NO. Here is the program:
#include <iostream>
#include <cstring>
class DaisyTransformation
{
private:
int moves,status,length;
char S1[50],S2[50],S3[50];
public:
void getValues( )
{
std::cin >> S1 >> S2 >> moves;
length=strlen(S1);
}
void printValues( )
{
//std::cout <<"After"<< S1<<S2;
if(status==0)
std::cout << "No\n";
else
std::cout << "Yes\n";
}
void printValues1( )
{
std::cout <<"After"<< S1<<S2;
}
void calcPossibilities()
{
int i=1,j=0;
//std::cout << "Before swapping" << S1<<S2;
for(i=0;i<=moves&&j<length;){
if(S1[j]==S2[j]){
//S3[j]=S1[j];
j++;
//std::cout <<"\ncond"<< 1<<j;
}
else{
if(S1[j]=='M'){
S1[j]='D';
i++;
j++;
//std::cout <<"\ncond1"<<i<<j ;
}
else{
S1[j]='M';
i++;
j++;
//std::cout << "\ncond2"<<i<<j;
}
}
}
if(strcmp(S1,S2)==0 && i==moves)
status=1;
else
status=0;
}
};
int main()
{
DaisyTransformation dt[250];
int noOfTestCases,i;
std::cin>>noOfTestCases;
for(i=0;i<noOfTestCases;i++){
std::cin.clear();
dt[i].getValues();
}
for(i=0;i<noOfTestCases;i++){
/*if(i==24)
dt[i].printValues1();*/
dt[i].calcPossibilities();
/*if(i==24)
dt[i].printValues1();*/
dt[i].printValues();
}
return 0;
}
This code runs perfect when my test cases are less(say 20 times). But, when I execute the same program for more test cases(say 30 and above), the program returns incorrect output.
Sample Input - executes fine
4
MMMMMDMDMDMMDMDMDM DDDDDDDDDDDDDDDDDD 12
MMMMMDMDMDMMDMDMDM DDDDDDDDDDDDDDDDDD 12
MMMMMDMDMDMMDMDMDM DDDDDDDDDDDDDDDDDD 12
MMMMMDMDMDMMDMDMDM DDDDDDDDDDDDDDDDDD 12
Output :
Yes
Yes
Yes
Sample Input - executes incorrectly
30
MMMMMDMDMDMMDMDMDM DDDDDDDDDDDDDDDDDD 12
MMMMMDMDMDMMDMDMDM DDDDDDDDDDDDDDDDDD 12
MMMMMDMDMDMMDMDMDM DDDDDDDDDDDDDDDDDD 12
MMMMMDMDMDMMDMDMDM DDDDDDDDDDDDDDDDDD 12
MMMMMDMDMDMMDMDMDM DDDDDDDDDDDDDDDDDD 12
MMMMMDMDMDMMDMDMDM DDDDDDDDDDDDDDDDDD 12
MMMMMDMDMDMMDMDMDM DDDDDDDDDDDDDDDDDD 12
MMMMMDMDMDMMDMDMDM DDDDDDDDDDDDDDDDDD 12
MMMMMDMDMDMMDMDMDM DDDDDDDDDDDDDDDDDD 12
MMMMMDMDMDMMDMDMDM DDDDDDDDDDDDDDDDDD 12
MMMMMDMDMDMMDMDMDM DDDDDDDDDDDDDDDDDD 12
MMMMMDMDMDMMDMDMDM DDDDDDDDDDDDDDDDDD 12
MMMMMDMDMDMMDMDMDM DDDDDDDDDDDDDDDDDD 12
MMMMMDMDMDMMDMDMDM DDDDDDDDDDDDDDDDDD 12
MMMMMDMDMDMMDMDMDM DDDDDDDDDDDDDDDDDD 12
MMMMMDMDMDMMDMDMDM DDDDDDDDDDDDDDDDDD 12
MMMMMDMDMDMMDMDMDM DDDDDDDDDDDDDDDDDD 12
MMMMMDMDMDMMDMDMDM DDDDDDDDDDDDDDDDDD 12
MMMMMDMDMDMMDMDMDM DDDDDDDDDDDDDDDDDD 12
MMMMMDMDMDMMDMDMDM DDDDDDDDDDDDDDDDDD 12
MMMMMDMDMDMMDMDMDM DDDDDDDDDDDDDDDDDD 12
MMMMMDMDMDMMDMDMDM DDDDDDDDDDDDDDDDDD 12
MMMMMDMDMDMMDMDMDM DDDDDDDDDDDDDDDDDD 12
MMMMMDMDMDMMDMDMDM DDDDDDDDDDDDDDDDDD 12
MMMMMDMDMDMMDMDMDM DDDDDDDDDDDDDDDDDD 12
MMMMMDMDMDMMDMDMDM DDDDDDDDDDDDDDDDDD 12
MMMMMDMDMDMMDMDMDM DDDDDDDDDDDDDDDDDD 12
MMMMMDMDMDMMDMDMDM DDDDDDDDDDDDDDDDDD 12
MMMMMDMDMDMMDMDMDM DDDDDDDDDDDDDDDDDD 12
MMMMMDMDMDMMDMDMDM DDDDDDDDDDDDDDDDDD 12
Output
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
**No**
Yes
Yes
Yes
Yes
Yes
I still cannot find the reason why during the execution of 24th test case returns NO when it is supposed to return YES
Aucun commentaire:
Enregistrer un commentaire