【发布时间】:2020-11-03 17:01:05
【问题描述】:
此遥控器包含 12 个键和 2 个非功能键。每个功能键都被赋予了一个唯一的标签,如上所示。 此控制台的计算机游戏有 N 个级别。游戏中的某些动作是使用遥控器控制的。每个动作的按键随着关卡的数量而变化,即操作的按键数量取决于游戏关卡,例如对于第三关,单步需要三个键[您必须依次按三个键才能进入第三关等级]。玩家只能按当前键的左、右、上或下键,不允许按底行角键。
假设玩家处于 2 级。根据规则,他必须按 2 个键才能移动(键的数量等于级别)。可能的移动键将是“HH”、“HI”、“HG”、“HE”、“HJ”、“IF”等
如果移动从“J”开始,可能的键是“JJ”、“JH”(计数 2)
如果移动从“H”开始,可能的键是“HH”、“HI”、“HG”、“HE”、“HJ”(计数 5)
如果移动从“I”开始,可能的键是“II”、“IH”、“IF”(计数 3)
所以对于第 2 级,可能的移动数为 36。
如果玩家处于 N 级,您必须找到该级别的可能移动总数。
输入/输出规格
输入规范:
输入为整数N,表示游戏等级
输出规格:
输出是一个整数 M,它是可能的移动总数
示例
输入:2
输出:36
说明:
1) 不要写main函数。
2) 您可以在代码的任何步骤打印和调试您的代码。
3) 您需要从给定函数返回所需的输出。
4) 不要更改编辑器代码中给出的函数和参数名称。
5) 返回类型必须与问题陈述中提到的相同。
6) 提交代码时,后台会执行 10 个不同复杂程度的测试用例,并根据通过的测试用例数打分。
7) 如果您不打算一次性完成代码,那么请将您的工作保存在本地机器上。代码只有在使用提交按钮提交后才会保存。
8 ) 只允许提交两次。
使用系统;
public class CandidateCode {
public static int combinationCounts(int input1) {
//Write code here
}
}
嗯,所以我遇到了这个问题,我得到了解决方案
public static int combinationCounts(int input1)
{
final int TOT_KEYS=12;
final int WORKING_KEYS=10;
int moves=input1;
return(TOT_KEYS*moves+moves+WORKING_KEYS);
}
public static void main(String[] args) throws IOException{
Scanner in = new Scanner(System.in);
int output = 0;
int ip1 = Integer.parseInt(in.nextLine().trim());
output = combinationCounts(ip1);
System.out.println(String.valueOf(output));
}
}
此代码仅适用于 n=2,但不适用于 3 以上, 任何人都可以为此提供最佳解决方案。 请帮助我
【问题讨论】:
-
你数过3、4级的答案是什么吗?...这可能会有所帮助。
-
是的......对于第 3 级,共有 12 个组合......但是这种方法不适用于 n=3,它只是计算 49 个组合,这是错误的
-
我们需要 N 级的解决方案。 “对于第 3 级,如果从 G 开始,是 GGG、GHI、GDA、GHE、GDE、GHJ、GDG、GHG、GHH、GDD、GGD、GGH 的组合,即可能有 12 种组合”
-
如果从G开始有12种组合,但这不是你要找的答案,对吧?你必须计算所有可能的组合。对吗?
-
是的,Egan 这就是我要寻找的转折点
标签: java