Help with unusual behavior.

Revision en1, by pain_is_salvation, 2020-07-02 22:38:09

I was trying to solve this simple DP question 219C - Color Stripe and my solution is working well in the text editor for C++ 17 , but it gives WA on sample cases here.. Please help. Code:-

	#include<bits/stdc++.h>
	#define pb push_back
	#define mp make_pair
	#define fi first
	#define se second
	#define vi(x) vector<x>
	#define all(x) x.begin(),x.end()
	#define pii pair<int,int>
	#define vpii vector< pair<int,int> >
	#define mii map<int,int>
	#define MOD 1000000007
	using namespace std;
	typedef long long ll;
	int main()
	{
	ios::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);
	    int n,k;
		cin>>n>>k;
		string s;
		cin>>s;
		int dp[n][k];
		for(int i=0;i<n;i++)
		for(int j=0;j<k;j++)
		dp[i][j]=MOD;
		string dps[n][k];
		for(int i=0;i<k;i++)
		{
		dp[0][i]=1;
		dps[0][i]+=('A'+i);
		}
		dp[0][s[0]-'A']=0;
		
		
		for(int i=1;i<n;i++)
		{
			for(int j=0;j<k;j++)
			{
				int in=-1;
				for(int l=0;l<k;l++)
				{
					if(l!=j)
					{
						if(dp[i][j]>dp[i-1][l])
						{
					    dp[i][j]=dp[i-1][l];
					    in=l;
					    }
					}
				}
				int x=s[i]-'A';
				if(j!=x)
				dp[i][j]++;
				string t;
				t+=('A'+j);
				dps[i][j]=dps[i-1][in]+t;
			}
		}
		int ans=MOD,in=-1;
		for(int i=0;i<n;i++)
		{
			if(ans>dp[n-1][i])
			{
		ans=min(ans,dp[n-1][i]);
		in=i;
		}
		}
	    cout<<ans<<endl;
	    cout<<dps[n-1][in]<<endl;
	return 0;
	}
	
	
Tags #help, #dynamic programing, #2d-dp

History

 
 
 
 
Revisions
 
 
  Rev. Lang. By When Δ Comment
en2 English pain_is_salvation 2020-07-02 22:41:57 13
en1 English pain_is_salvation 2020-07-02 22:38:09 1486 Initial revision (published)