Мой код дает неправильный ответ на следующий вопрос.Я перепробовал много тестовых случаев, но не смог найти ошибку.
http://www.spoj.com/problems/DSUBSEQ/
# include<bits/stdc++.h>
# define lli long long int
# define pb push_back
# define loop(i,a,b) for(int i=a;i<b;i++)
# define loopl(i,a,b) for(lli i=a;i<b;i++)
# define MAXN 1000
#define INF 1000000000
# define mod 1000000007
using namespace std;
int main()
{
int t;
cin>>t;
while(t--)
{
string s;
cin>>s;
int n=s.length();
int visited[26],dp[n+1];
memset(visited,-1,26);
loop(i,0,26) visited[i]=-1;
dp[0]=1;
loop(i,1,n+1)
{
dp[i]=2*dp[i-1];
if(visited[s[i-1]-'A']!=-1) dp[i]=(dp[i]%mod-dp[visited[s[i-1]-'A']]%mod + mod)%mod ;
visited[s[i-1]-'A'] = i-1 ;
}
cout<<dp[n]<<endl;
}
}
Примеры тестовых случаев:
ВХОД:
ВЫХОД:
Но я получаю: неправильный ответ# 1
Этот язык - c ++.Я новичок в динамическом программировании.