我的字符串 s
包含0和1。为什么 Ascore
和 Bscore
零,而不是递增,给定的条件如下?
int main()
{
long long int n;
string s;
cin>>n; // 3
cin.ignore();
long long int siz = 2*n, Ascore = 0, Bscore = 0;
cin>>s; // 101011
for(int i = 0; i < siz; i++ )
{
if((i%2 == 0) && (s[i] == 1))
Ascore++;
if((i%2 == 1) && (s[i] == 1))
Bscore++;
if(abs(Ascore-Bscore) == 2)
cout<<i+1<<"\n";
if((i % 2 == siz-1) && (Ascore == Bscore))
cout<<i+1<<"\n";
}
}
A string
是由 char
的,所以你需要对照 char
字面意义 int
例如
s[i] == '1'
而不是
s[i] == 1
你使用的是整数1而不是字符 "1"。
for(int i = 0; i < siz; i++ )
{
if((i%2 == 0) && (s[i] == '1'))
Ascore++;
if((i%2 == 1) && (s[i] == '1'))
Bscore++;
if(abs(Ascore-Bscore) == 2)
cout<<i+1<<"\n";
if((i % 2 == siz-1) && (Ascore == Bscore))
cout<<i+1<<"\n";
}