Como adicionar série de números em Java

Shravan Kumar:

Quando a série soma é implementado, há uma mudança na saída desejada.

O problema é:

Lily tem uma barra de chocolate que ela quer compartilhá-lo com Ron para o seu aniversário. Cada um dos quadrados tem um inteiro nele. Ela decide compartilhar um segmento contíguo da barra selecionado tal que o comprimento do segmento corresponde mês de nascimento de Ron e a soma dos inteiros nos quadrados é igual ao seu dia de nascimento. Você deve determinar quantas maneiras ela pode dividir o chocolate.

Considere a barra de chocolate como uma matriz de quadrados, s=2,2,1,3,2. Ela quer encontrar segmentos somando-a-dia do nascimento de Ron, d=4com um comprimento de igualar o seu mês de nascimento, m=2. Neste caso, existem dois segmentos de conhecê-la critérios: 2,2e 3,1.

Descrição da função

Completar a função de aniversário no editor abaixo. Ele deve retornar um inteiro denotando o número de maneiras Lily pode dividir a barra de chocolate.

Aniversário tem o seguinte parâmetro (s):

s: Um array de inteiros, os números em cada um dos quadrados de chocolate
d: um inteiro, dia do nascimento de Ron
m: um inteiro, mês do nascimento de Ron

Formato de entrada

A primeira linha contém um inteiro n, o número de quadrados na barra de chocolate. A segunda linha contém inteiros separados por espaços s[I], os números nos quadrados de chocolate onde. A terceira linha contém dois inteiros separados por espaços, me d, dia do nascimento de Ron e seu mês de nascimento.

Formato de saída

Imprimir um inteiro indicando o número total de maneiras que Lily parte lata sua barra de chocolate para compartilhar com Ron.

Entrada de amostra 0

5
1 2 1 3 2
3 2

Exemplo de saída 0

2

E o meu código em java

import java.io.*;
import java.math.*;
import java.security.*;
import java.text.*;
import java.util.*;
import java.util.concurrent.*;
import java.util.function.*;
import java.util.regex.*;
import java.util.stream.*;

import java.util.Scanner;
public class Solution {

public static void main(String args[])
{
  int a[] = new int[1000];
  Scanner s=new Scanner(System.in);
  int sum=0,count=0;
  int n=s.nextInt();
  for(int i=0;i<n;i++)
  {
    a[i]=s.nextInt();
  }
  int m=s.nextInt();
  int d=s.nextInt();
  for(int i=0;i<n;i++){ 
    for(int j=i;j<d+i;j++)
    {
      sum=sum+a[j];
      if(sum==m)
      {
        count++;

      }
    }sum=0; 
  }
  System.out.println(count);
}}

Recebo saída como 3 em vez de 2. Como a soma de até que os dtermos?

mettleap:

Em seu algoritmo (mostrado abaixo), você está verificando a soma antes do loop interno terminou:

import java.io.*;
import java.math.*;
import java.security.*;
import java.text.*;
import java.util.*;
import java.util.concurrent.*;
import java.util.function.*;
import java.util.regex.*;
import java.util.stream.*;

import java.util.Scanner;
public class Solution {

public static void main(String args[])
{
  int a[] = new int[1000];
  Scanner s=new Scanner(System.in);
  int sum=0,count=0;
  int n=s.nextInt();
  for(int i=0;i<n;i++)
  {
    a[i]=s.nextInt();
  }
  int m=s.nextInt();
  int d=s.nextInt();
  for(int i=0;i<n;i++){ 
    for(int j=i;j<d+i;j++)
    {
      sum=sum+a[j];
      //THIS CHECK SHOULD BE OUTSIDE THE CURRENT FOR LOOP
      if(sum==m)
      {
        count++;

      }
    }sum=0; 
  }
  System.out.println(count);
}}

Você deve fazê-lo como tal,

import java.io.*;
import java.math.*;
import java.security.*;
import java.text.*;
import java.util.*;
import java.util.concurrent.*;
import java.util.function.*;
import java.util.regex.*;
import java.util.stream.*;

import java.util.Scanner;
public class Solution {

public static void main(String args[])
{
  int a[] = new int[1000];
  Scanner s=new Scanner(System.in);
  int sum=0,count=0;
  int n=s.nextInt();
  for(int i=0;i<n;i++)
  {
    a[i]=s.nextInt();
  }
  int m=s.nextInt();
  int d=s.nextInt();
  for(int i=0;i<n;i++){ 
    for(int j=i;j<d+i;j++)
    {
      sum=sum+a[j];
    }

      if(sum==m)
      {
        count++;

      }
    sum=0; 
  }
  System.out.println(count);
}}

No entanto, mesmo a solução acima está faltando um caso extremo. Você está inicializando sua matriz nomeado como uma matriz de comprimento 1000 que irá introduzir erros em seu código. Por exemplo, considere o seguinte input

5
1 2 1 3 2
2 2

agora desde sua matriz um é algo como o seguinte:

1 2 1 3 2 0 0 0 0 ... //till length 1000

seu algoritmo irá responder da seguinte forma como resposta válida. quando na realidade não há nenhum:

1 2 1 3 [2 0] 0 0 0 ... //till length 1000

Portanto, o seu exterior para o laço só deve ir até o (nd) th elemento

Acho que você gosta

Origin http://43.154.161.224:23101/article/api/json?id=217927&siteId=1
Recomendado
Clasificación