【发布时间】:2016-02-26 18:57:02
【问题描述】:
编写一个程序,确定玩家的所有不同方式 在篮球比赛中获得一定数量的分数。三个指针 得 3 分(废话),投篮得 2 分,犯规 每个镜头都值 1 分。一定要打印总数 最后的组合。
运行:
得了多少分? 8
2个三分球,1个投篮命中,0个犯规
2个三分球,0个射门得分,2个犯规
1个三分球,2个投篮命中,1个犯规
1 次三分球,1 次投篮,3 次罚球
1 次三分球,0 次投篮,5 次罚球
0 次三分球,4 次射门,0 次罚球
0 次三分球,3 次投篮命中,2 次罚球
0 次三分球,2 次投篮,4 次罚球
0 次三分球,1 次投篮,6 次罚球
0个三分球,0个射门得分,8个犯规
有 10 种不同的方式来获得 8 分
到目前为止我所拥有的:
import java.util.Scanner;
public class MarchMadness
{
public static void main(String[] args)
{
Scanner kbReader = new Scanner(System.in);
System.out.println("How many points were scored?");
int points = kbReader.nextInt();
int ft = 1;
int fg = 2;
int tp = 3;
if (points % tp == 0)
{
System.out.println((points/tp) + " three pointers.");
}
}
}
我知道如何使程序适用于特定情况,例如 8 分,但我不知道如何使其接受任何数量的点并获得正确的输出或打印出可能的解决方案的数量。我该怎么办?
【问题讨论】:
-
这是作业还是类似的东西?如果是,请适当标记。
-
你可以使用动态规划来解决这个问题。看看this article,它解决了类似的问题。也许你会得到一些想法。或者,this SO question 也会询问动态编程。
-
在我看来,与其直接从代码开始,不如用纸笔解决问题。看看你是否能弄清楚如何做出不同的组合来达到目标。如果你在它上面工作一段时间,你肯定会看到一个模式。然后想想如何想出一个算法,让它适用于所有可能的场景。然后只从编写代码开始。如果你直接深入代码,只会让你更加困惑。上述方法总体上将帮助您提高解决问题的能力。祝你好运!
-
@katzenhut 没有作业标签。见meta.stackexchange.com/questions/147100/…
-
@jpsizzls 请将答案标记为正确
标签: java