Capturar Arrays que se cruzam

Olá! preciso de uma ajuda em um exercício que estou fazendo, já tentei várias abordagens mas nenhuma funcionou, eu tenho o seguinte problema:

É fornecida uma matriz não vazia A, composta por N números inteiros. A sequência dos elementos da
matriz A representam a sequência de pessoas em uma calçada. A matriz A contém apenas 0 e/ou 1:
0 representa uma pessoa viajando para o leste e 1 representa uma pessoa viajando para o oeste.

O objetivo é contar os pares de pessoas que se cruzam. Dizemos que um par de pessoas (P, Q),
onde 0 ≤ P < Q < N, se cruzam quando P está viajando para o leste e Q está viajando para o oeste.
Por exemplo, considere a seguinte matriz A:
A [0] = 0
A [1] = 1
A [2] = 0
A [3] = 1
A [4] = 1
Temos cinco pares de pessoas se cruzando: (0, 1), (0, 3), (0, 4), (2, 3), (2, 4).

Eu consegui observar um padrão ai, a comparação só pode ser feita no fluxo do array, por exemplo pego o A[0] = 0 depois vou capturando cada encontro com indices que contenham 1 ai incremento uma variavel.

Só que não estou conseguindo pegar um indice e comparar ele com os demais abaixo. Alguém pode me ajudar a entender como fazer isso?

Dada uma matriz não vazia A de N numeros inteiros , retorna o número de pares de pessoas que se cruzam. A função deve retornar -1 se o número de pares de pessoas se cruzando exceder 1.000.000.000
N é um número inteiro dentro do intervalo [1…100.000];

Quais vc tentou? Às vezes é apenas um detalhe que ficou faltando.

Através de um laço WHILE dentro de um laço FOR é possível estabelecer a condição para que todas as posições do vetor sejam lidas e comparadas, exemplo:

for(int i = 0; i < tamanho ; i++) {
            j = i + 1; // o índice j sempre irá iniciar uma posição depois do índice i
            while (j < tamanho){ // equanto o vetor não for lido 
                if(A[i] == 0 && A[i] != A[j]){ //Condição para exibição dos valores
                    System.out.println("("+ i + "," + j + ") ");
                }
            j++;
            }                       

Existem diversas maneiras de resolver, e essa é apenas uma delas,tente abstrair o código e fazer da sua maneira, não tenha medo de perguntar e expor suas idéias.

1 curtida

Valeu, funcionou aqui, eu estava com dificuldade para capturar o próximo item do array, e esse J = i + 1 era o que faltava, obrigado.
Ainda tenho dificuldades com Arrays e Listas, estou praticando para melhorar, eles dão um nó na cabeça, parece ser a parte mais complicada de programação.

Acredite, tem coisa bem pior.