JAVA程序总是为第一次迭代提供错误的输出,然后正常工作

时间:2017-11-04 17:16:13

标签: java

我正在解决我在CodeChef上发现的问题 -

一个地区有一个村庄。有两种部落A和B驻留在那里。一个村庄可以是空的,也可以被其中一个部落占领。据说一个空村庄由A村的一个部落控制,如果它被左边和右边的部落A村包围。部落B也是如此。

分别找出受部落A和B控制的村庄数量。

输入

输入的第一行包含一个整数T,表示测试用例的数量。

输入的第一行包含一个字符串s,表示村庄的配置,每个村庄的字符可以是“A”,“B”或“。”。

输出

对于每个测试用例,输出两个空格分隔的整数,分别表示由部落A和B控制的部落数量。

实施例

输入

4 A..A..B。B ..一个.. 一个....一个 ..B..B..B ..

输出

4 5 1 0 6 0 0 7

这是我的代码 -

import java.util.Scanner;

class Villages_and_Tribes {

public static void main(String[] args)
{
    Scanner sc = new Scanner(System.in);
    System.out.println("Enter: ");
    int T = sc.nextInt();
    while(T-->0)
    {
        String s = sc.nextLine();
        Villages_and_Tribes obj = new Villages_and_Tribes();
        obj.Count_Villages(s);
    }
}
public void Count_Villages(String s)
{
    int l = s.length();
    int A=0, B=0;
    for(int i=0; i<l; i++)
    {
        char c = s.charAt(i);
        if(c=='A')
            A++;
        else if(c=='B')
            B++;
        else
        {
            boolean flagA1 = false, flagB1 = false, flagA2 = false, flagB2 = false;
            for(int j=i+1; j<l; j++)
            {
                char x = s.charAt(j);
                if(x=='A')
                {
                    flagA1 = true;
                    break;
                }
                if(x=='B')
                {
                    flagB1 = true;
                    break;
                }
            }
            for(int k=i-1; k>=0; k--)
            {
                char x = s.charAt(k);
                if(x=='A')
                {
                    flagA2 = true;
                    break;
                }
                if(x=='B')
                {
                    flagB2 = true;
                    break;
                }
            }
            if(flagA1==true && flagA2==true)
                A++;
            else if(flagB1==true && flagB2==true)
                B++;
        }
    }
    System.out.println(A + " " + B);
}

}

这是我的输出 -

输入:

4

0 0

... A..A..B乙

4 5

.. ..甲

1 0

一个.... A

6 0

如您所见,T = 1的输出为“0 0”。所以,如果我想要四个输入和四个相应的输出,我需要输入T作为5而不是4.

有人可以告诉我为什么会这样吗?我非常感谢你的帮助。

编辑:

我的问题被标记为重复,但我将T--更改为T,然后使用T = T-1将其减少,以便完全避免使用减量运算符。但是,我得到了和以前一样的结果。我很确定错误不是由于操作员的使用。

0 个答案:

没有答案