代码有问题,编译出错。希望大家看出错误私信我,谢谢
#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cmath>
#include <cstring>
#define INF 0xf3f3f3f
using namespace std;
int main()
{
int t;
char s[200001];
int num[200001];
int dp[200001][5];
int Case=1;
cin>>t;
while(t--)
{
getchar();
printf("Case #%d: ",Case++);
gets(s);
int len=strlen(s);
for(int i=0;i<len;i++)
cin>>num[i];
if(s[0]=='1')
{
dp[0][1]=num[0];
dp[0][0]=-INF;
}
else if(s[0]=='0')
{
dp[0][1]=-INF;
dp[0][0]=0;
}
else
{
dp[0][1]=num[0];
dp[0][0]=0;
}
for(int i=1;i<len;i++)
{
if(s[i]=='0')
{
dp[i][0]=max(dp[i-1][1]+num[i],dp[i-1][0]);
dp[i][1]=-INF;
}
else if(s[i]=='1')
{
dp[i][1]=max(dp[i-1][0]+num[i],dp[i-1][1]);
dp[i][0]=-INF;
}
else
{
dp[i][1]=max(dp[i-1][0]+num[i],dp[i-1][1]);
dp[i][0]=max(dp[i-1][1]+num[i],dp[i-1][0]);
}
}
printf("%d\n",max(dp[len-1][1],dp[len-1][0]));
}
return 0;
}