# Getting wrong answer for chef and string problem in beginners section

#include
#include
#include<string.h>
using namespace std;
int main()
{
int j=0,count=0,a=0,i;
string s;
char chef[]={‘C’,‘H’,‘E’,‘F’},arr[2000];
cin>>s;
for(i=0;i<s.size();i++)
{
if(s[i]==‘C’||s[i]==‘H’||s[i]==‘E’||s[i]==‘F’)
{

``````        if(s[i]==chef[j])
{
arr[a]=chef[j];
a++;
j++;
if(arr[a-1]=='F')
{
count+=1;
j=0;
}
}
}
}
cout<<count;
return 0;
}``````

``````Input
CCHHEEFF
Correct Output
2
1
``````

The correct procedure is in counting the minimum amount of ‘CHEF’ upto index i (which is minimum amount of ‘c’, ‘h’ ‘e’ and 'f in order)

My code for reference-

``````#include <iostream>
#include<bits/stdc++.h>
using namespace std;

int main() {
string s;
cin>>s;
int n=s.length(),i,j=0,k;
int arr[4]={0},cE[n],cF[n],cH[n];
for(i=n-1;i>=0;i--)
{
if(s[i]=='C')
arr[0]=min(arr[1],arr[0]+1);
else if(s[i]=='H')
arr[1]=min(arr[2],arr[1]+1);
else if(s[i]=='E')
arr[2]=min(arr[3],arr[2]+1);
else if (s[i]=='F')
arr[3]++;
}
int min=arr[0];
for(i=1;i<4;i++)
if(arr[i]<min)
min=arr[i];
cout<<min<<endl;
return 0;
}``````
1 Like

Ohh, one more query from beginner section, that too without problem link.pls provide problem link with your question(highly recommended).
Here is the case where your solution fails.
test case:

INPUT:

CHECHEFCHEFF

OUTPUT:

3

Modify your code according to this kind of test case.
feel free to comment for any further queries.

1 Like