gpt4 book ai didi

java - 网球比赛算法

转载 作者:太空狗 更新时间:2023-10-29 22:56:09 25 4
gpt4 key购买 nike

在一场网球锦标赛之后,每个球员都被问到参加了多少场比赛。一名运动员不能与另一名运动员进行一场以上的比赛。作为输入,您唯一拥有的是运动员人数和每位运动员参加的比赛。作为输出,如果比赛可以根据运动员的答案进行,则输出为 1,否则输出为 0。例如:

Input: 4 3 3 3 3      Output: 1  
Input: 6 2 4 5 5 2 1 Output: 0
Input: 2 1 1 Output: 1
Input: 1 0 Output: 0
Input: 3 1 1 1 Output: 0
Input: 3 2 2 0 Output: 0
Input: 3 4 3 2 Output: 0

输入的第一个数字不是运动员答案的一部分,它是参加比赛的运动员人数,例如 6 2 4 5 5 2 1 我们有 6 名运动员参加,他们的答案是 2 4 5 5 2 1.

到目前为止,这是我们写的,但效果不是很好:

import java.util.Scanner;
import java.util.Arrays;

public class Tennis {

public static void main(String[] args) {
Scanner input = new Scanner(System.in);

String N;
int count;
int sum = 0;
int max;
int activeAthletes;
int flag;

System.out.printf("Give: ");
N = input.nextLine();

String[] arr = N.split(" ");
int[] array = new int[arr.length];

for (count = 0; count < arr.length; count++) {
array[count] = Integer.parseInt(arr[count]);
//System.out.print(arr[count] + " ");
}

for (count = 1; count < arr.length; count++) {
sum += array[count];
}
//System.out.println("\n" + sum);

activeAthletes = array[0];

for (count = 1; count < array.length; count++) {
if (array[count] == 0) {
activeAthletes--;
}
}

max = array[1];
for (count = 2; count < array.length; count++) {
if (array[count] > max) {
max = array[count];
}
}
// System.out.println(max);

if ((sum % 2 == 0) && (max < activeAthletes)) {
flag = 1;
} else{
flag = 0;
}

System.out.println(flag);
}
}

我不想要一个直接的解决方案,可能只是一些提示和提示,因为我们真的不知道还能做什么,我重复一遍,尽管我会把它标记为作业(因为我觉得版主会再次关闭它)不是,这只是我兄弟发现的问题,我们正在努力解决。

你们中的许多人已经回答了,我真的很感激,但由于我明天要工作,我需要 sleep ,所以明天我可能会阅读其余的答案,看看有什么用

最佳答案

不确定它是否 100% 有效,我会这样说:

  1. 排序输入
  2. 对于数组中从右到左的每个元素(从大到小)

    • 根据索引 i 处元素的值 n 将 n 个左侧元素减 1
    • 如果因为到达列表末尾或值 0 而不能减少则返回失败
  3. 返回成功。

这个逻辑(如果正确的话)可以导致对 O(N*log(N)) 解决方案进行一些修改,但我目前认为这对新手程序员来说太多了。

编辑:

这在输入时不正确
2 2 1 1

然后所有步骤(不排序):

  1. 当列表 L 中的任何元素不为 0 时:

    • 在列表L中找到最大的元素N
    • 如果值 >= 1,则将列表 L 中的 N 个其他值减 1(不要减少这个最大的元素)
      • 如果这一步失败则返回失败
    • 将此元素 N 设置为 0
  2. 返回确定

关于java - 网球比赛算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10323403/

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