当前位置: 首页 > 知识库问答 >
问题:

如何在Java中添加数字系列

云何平
2023-03-14

当执行求和序列时,所需输出发生变化。

问题是:

莉莉有一块巧克力,她想在罗恩生日时与他分享。每个正方形上都有一个整数。她决定共享所选条形图的一个连续段,以便该段的长度与Ron的出生月份相匹配,并且平方上的整数之和等于他的出生日期。你必须确定她可以用多少种方法分巧克力。

将巧克力棒视为一个方块数组,s=2,2,1,3,2。她想找到罗恩出生日的总和,长度等于他出生月份的片段,m=2。在这种情况下,有两个段符合她的标准:2,23,1

功能描述

在下面的编辑器中完成生日功能。它应该返回一个整数,表示莉莉可以划分巧克力棒的方式。

生日具有以下参数:

s:一个整数数组,巧克力每个方格上的数字
d:一个整数,罗恩的生日
m:一个整数,罗恩的出生月份

输入格式

第一行包含一个整数n,即巧克力棒中的正方形数。第二行包含空格分隔的整数s[I],巧克力方块上的数字在哪里。第三行包含两个空格分隔的整数,md,Ron的生日和他的出生月份。

输出格式

打印一个整数,表示Lily可以将巧克力分成多少份与Ron共享。

样本输入0

5
1 2 1 3 2
3 2

样本输出0

2

还有我的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);
}}

我得到的输出是3而不是2。如何计算直至d项的总和?

共有2个答案

董飞航
2023-03-14

试试这个,

//n - amount of bars
//s - array of bars (s[i] - weight of each bar)
//d - Ron's birthday
//m - Ron's birthmonth

int answer = 0;
 // iterate bars
for (int k = 0; k < s.length; k += 1) {
     int sum = 0;
     // iterate bars month times
     for (int j = i; j < m + i; j += 1) {
         // count sum of weights month times
         sum += s[j];
     }
     // if counted sum is equal to amount of days
     // then it's +1 to possible ways!
     if (sum == d) {
        answer += 1;
     }
}
阴波峻
2023-03-14

在您的算法(如下所示)中,您在内部循环结束之前检查总和:

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);
}}

你应该这样做,

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);
}}

然而,即使上面的解决方案也缺少一个边缘情况。您正在将名为a的数组初始化为长度为1000的数组,这将在代码中引入错误。例如,考虑以下输入

5
1 2 1 3 2
2 2

现在,由于阵列a的外观如下所示:

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

您的算法将给出以下答案作为有效答案。

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

因此,外部for循环应该只运行到第(n-d)个元素

 类似资料:
  • 问题内容: 是否可以向Java系统属性添加新值。如果有的话,如何在Java系统属性中引入具有相应值的新键。 问题答案: 无论是或使用国旗当您启动JVM

  • 我对Java编程相对较新,正在尝试使用(2017-3017)中的值创建一个数组。 我想知道是否有一种方法可以创建一个数组并预先填充这些值,而不是这样做: 这似乎非常冗长,我可以简单地定义我希望添加到数组中的整数范围。 我知道在网站上有类似的问题,但是没有一个能帮助我。 谢啦! 编辑:我忘了提到我正在使用Java7,因此不能使用IntStream。

  • 我有一段代码,我想为一个char变量添加值97,但根据ASCII表,得到字母“b”的最终数字98,输出为205。 我的代码有什么问题? 谢谢你的帮助。

  • 问题内容: 如果我有一个字符串变量: 我想在每一个前面加一个转义字符和 变量中 (即 未 竟逃脱字符),我该怎么做? 问题答案: 我不是在这里要求优雅,但我 认为 它可以满足您的要求(如果我误会了,请纠正我): 输出

  • 问题内容: 我想知道如何在数字上加上逗号。让我的问题变得简单。 我想更改此: 至: 和: 至 以此类推。有可能使用php函数吗? 问题答案: 从php手册http://php.net/manual/en/function.number- format.php 我假设您想要英语格式。 我的2美分

  • 在这个方法中,我有一个字符串数组,即BarchartLabels。我想把这个数组添加到JSOObject中: {“数据”:“[\”一月\“,\”二月\“,\”三月\“,\”四月\“,\”五月\“,\”六月\“,\”七月\“]”}