gpt4 book ai didi

java - 查找数组中总和为一个数字的数字对的数量

转载 作者:行者123 更新时间:2023-12-01 13:14:57 26 4
gpt4 key购买 nike

我正在尝试编写一个程序,该程序将在用户指定长度的数组内部进行搜索,以选出是否存在一对总和为 7 的数字。其想法是,如果有 k掷骰子的数量,掷出的骰子中有多少对数字加起来为 7。到目前为止,这就是我能想到的所有内容,但我很困难。

这是程序的驱动程序类。我必须编写一个类来使该驱动程序正常运行。

import java.util.Scanner;   
public class SevenDriver{
public static void main(String[] args){
System.out.println("Enter number of dice to toss");
Scanner s = new Scanner(System.in);
int diceCount = s.nextInt();
SevenTally t = new SevenTally(diceCount);
int experiments = 1000000;
int wins = 0;
for(int j = 0; j < experiments; j++)
if(t.experiment()) wins++;
System.out.println((double)wins/experiments);

}
}

这就是我到目前为止所拥有的。它当前无法工作或编译。我只是在寻找一些想法来让我继续前进。谢谢!

public class SevenTally{
private int diceCount;

public SevenTally(int die){
diceCount = die;
}

public int genDice(){
return 1 + (int)(Math.random()*6);
}

public boolean experiment(){

boolean[] nums = new boolean[diceCount];
int ranNum;
int sum = 7;
for(int i = 0; i < nums.length; i++){
ranNum = genDice();
if (nums[ranNum] == sum){
return true;
}
}

int left = 0;
int right = nums.length - 1;
while(left<right){
int tempSum = nums[left] + nums[right];
if(tempSum == 7){
return true;
}
else if(tempSum>7){
right--;
}
return false;
}

}

最佳答案

首先填充您的array长度为 k 且随机 int 位于 [1;6]

长度为 k 的数组中可能的对的数量是数组中 2 组合的数量,即 (k-1)*k/2 ( http://en.wikipedia.org/wiki/Combination )

您可以测试 array 中所有可能的对 (i,j)像这样:

int win = 0;
int tally = 7;

for(int i=0; i<k-1; i++){
for(int j=i+1; j<k; j++){
if(array[i]+array[j] == tally){
win++;
}
}
}

它的作用是将该对的第一个元素设置为数组的第一个元素,并将其与其他元素依次求和。

它配对 array[0]array[1]array[k-1]i 的第一遍for 循环,即 k 对。然后在第二次传递 k-1 对,依此类推。

最终得到 (k)+(k-1)+(k-2)+...+1 对,这正是 (k-1)*k/2 对。

完成=]

编辑:抱歉,还没有阅读全文。方法experiment()应该返回一个 boolean 值。你可以return win>0?true:false;例如...

关于java - 查找数组中总和为一个数字的数字对的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22541705/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com