这个任务实际上是作为作业交给我们的,但是作业中的要求是编写一个递归方法,如果我们对数组 A 执行了几个步骤后数组 A 可以匹配数组 B,则该方法可以返回 true 或 false,我已经以递归方式回答了这个问题,我有兴趣找到是否有更智能的方法,可以用来解决这种类型分配的某种模式或方程式,话虽如此,我不确定是否作业标签仍然相关,但我添加它以防万一。
以下是详细信息: 给定两个长度相同的布尔数组。如果给定数组“init”可以匹配目标数组“target”,则返回 true,问题是:每当我们将一个索引的值从 true “翻转”为 false 时,反之亦然,索引中的值在右侧和左侧当前索引的值,也翻转它们的值(如果这样的索引当然在数组范围内),例如:
boolean[] init = {true, false, true, false, true, false};
boolean[] target = {false, true, false, true, false, true};
在这种情况下,答案是正确的,因为我们可以翻转 init 数组的第一个点 [0],结果是:
boolean[] init = {false, true, false, false, true, false);
boolean[] target = {false, true, false, true, false, true};
然后翻转 init 数组中的第 4 个点 [3],导致 init 和目标数组之间匹配:
boolean[] init = {false, true, false, true, false, true};
boolean[] target = {false, true, false, true, false, true};
递归地,它只是测试“翻转状态”或没有“翻转状态”的两个选项,并在每个测试的数组索引中前进,这将递归检查所有选项,如果找到匹配项,最终返回 true。
现在回到我的问题上,有没有更好的方法来解决这类问题而不必检查这么多选项?它不必是递归的……事实上,最好不是递归的:)所以请随时分享您的想法和建议。
谢谢!