在Java中计算实例

时间:2014-11-23 17:04:22

标签: java algorithm

所以,我正在准备比赛,我似乎无法弄清楚其中一个练习问题。我得到了导入所有数据。我理解如何在脑海中解决问题,而不是如何将其置于代码中。附:我是编程新手。

问题:一只狗在特定时间间隔内吠多少次?

编辑:该程序应该可以为多只狗工作

给我的东西:

  1. 狗的总数。     int numofdog = q.nextInt();

  2. 第一次吠叫的时间。

    int b = 0;
    
  3. 每次吠叫之间的时间。

    int d = 4;
    
  4. 计算树皮数量的时间段。 4 - 10

  5. 所以例如,只有一只狗。狗首先吠叫0,然后是4,然后是8 ......等等。我计算的时间是4-10。因此,狗在4和8处吠叫。所以狗总共4到10次吠叫2次。

    我不知道如何继续解决这个问题。

    原始代码

    import java.io.*;
    import java.util.*;
    
    public class dog {
    
    public static void main(String[] args) {
    
        int b = 0;
        int d = 0;
        int x = 0;
        int y = 0;
        int count = 0;
        int m =0;
    Scanner q = new Scanner(System.in);
    
    int numofdog = q.nextInt();
    
    while (numofdog-->0) {
    
         b = q.nextInt();  // First Bark
         d = q.nextInt();  // Time between barks
         x = q.nextInt();  // Starting of interval
         y = q.nextInt();  // Ending of interval    
    
    
    
    
    
    int time [] = new int[y];             // Make an array
    for (int a = 0; a < time.length; a++) {
       time[a] = a + 1;
    
       if (time [a] % d == 0 ) {
    
           count ++;
            }
        }
    } 
    
    
    System.out. println(count);
    }
    
    }
    

    更新代码(仍在处理)

    我会在这里逐字逐句地发布我的问题所以我们所有人都能理解

    Dog Breeder bob,想知道他的狗在一定时间间隔内吠叫了多少次

    输入。输入的第一行将是单个int numofdog,狗的数量为bob。下一行numofdog行将包含两个整数:b和d。 b是第一次树皮的时间,d是树皮之间的时间。下一行是单个整数numberofintervals。下一个numberofintervals行将包含两个整数xyx是测量间隔的开始,y是结束

    示例输入

    2 --- numofdogs

    0 4 --- b和d为狗1

    2 5 --- b和d为狗2

    1 ---正在测量的间隔数

    4 8 --- x和y表示间隔。

    import java.io.*;
    import java.util.*;
    
    public class dog {
    
    public static void main(String[] args) {
    
        int b1 = 0;
        int b2 = 0;
        int d1 = 0;
        int d2 = 0;
        int x1= 0;
        int y1= 0;
        int x2= 0;
        int y2= 0;
        int count = 0;
    
    
    Scanner q = new Scanner(System.in);
    
    int numofdog = q.nextInt();
    
    while (numofdog-->0) {
    
         b1 = q.nextInt();  // First Bark (Dog 1)
         d1 = q.nextInt();  // Time between barks (Dog 1)
         b2 = q.nextInt();  // First Bark (Dog 2)
         d2 = q.nextInt();  // Time between barks (Dog 2)
    
    }
    
        int numberofintervals = q.nextInt();
    
         while (numberofintervals -->0) {
         x1 = q.nextInt();  // Starting of interval
         y1 = q.nextInt();  // Ending of interval   
         x2 = q.nextInt();  // Starting of interval
         y2 = q.nextInt();  // Ending of interval   
    
         }
    
    int time [] = new int[10000];             // Make an array, to represent time
    for (int a = 0; a < time.length; a++) {
       time[a] = a + 1;
    
       if (time [a] % d1 == 0 || time [a] % d2 == 0) {
    
           count ++;
            }
    
        }
    System.out.println(count);
    } 
    
    
    
    }
    

1 个答案:

答案 0 :(得分:1)

我制作了一个新的代码,你在考虑2只狗,如果有3只或更多的狗,那么你的代码将不起作用,所以数组就是这个问题的解决方案。

每只狗都拥有自己的bd个变量。用超过2只狗测试它,看看会发生什么。如果发生任何错误,请发布它,我会检查它。

你的for循环并不是最佳的,因为你的间隔时间是0,而不是你的xy(开始和结束)间隔。

import java.io.*;
import java.util.*;

public class NumberOfBarksTest {
    public static void main(String[] args) {
        int numOfDog = 0;
        int b[] = new int[10]; //1st bark
        int d[] = new int[10]; //time between barks
        int numberOfIntervals = 0;
        int x[] = new int[10]; //start of interval
        int y[] = new int[10]; //end of interval
        int barks[] = new int[10];
        int totalBarks = 0;
        Scanner q = new Scanner(System.in);

        for(int i = 0; i < 10; i++) {
            barks[i] = 0;
        }

        numOfDog = q.nextInt();

        for(int i = 0; i < numOfDog; i++) {
            b[i] = q.nextInt();
            d[i] = q.nextInt();
        }

        numberOfIntervals = q.nextInt();

        for(int i = 0; i < numberOfIntervals; i++) {
            x[i] = q.nextInt();
            y[i] = q.nextInt();
        }

        for(int dog = 0; dog < numOfDog; dog++) {
            for(int i = x[dog]; i <= y[dog]; i += d[dog]) {
                barks[dog]++;
            }
        }

        for(int i = 0; i < numOfDog; i++) {
            System.out.println("Barks for dog " + i + ": " + barks[i]);
            totalBarks += barks[i];
        }
        System.out.println("Total barks: " + totalBarks);
    }
}