如何解决For 和增强的 For 循环在 Java 递归问题中给出不同的输出
所以有一个递归问题我正在解决,但使用常规 for 循环和增强 for 循环的输出似乎不同,增强 for 循环给出了正确的答案。
注释部分不能正常工作,代替它下方的增强 for 循环
问题是这样 - 1. 给你一个数字 n 和一个数字 m,代表迷宫中的行数和列数。 2. 你站在左上角,必须到达右下角。 3. 在一次移动中,您可以水平跳跃 1 步或更多步(如 h1,h2,.. ),或垂直跳跃 1 步或更多步(如 v1,v2,..)或对角线跳跃 1 步或更多步(如 d1,d2,...)。 4. 完成getMazePath 函数的主体——不改变签名——得到可用于从左上角移动到右下角的所有路径的列表。 使用示例输入和输出来了解输出。
public static void main(String[] args) throws Exception {
Scanner sn=new Scanner(system.in);
int n=sn.nextInt();
int m=sn.nextInt();
ArrayList<String> ll=getMazePaths(0,n,m);
System.out.println(ll);
}
public static ArrayList<String> getMazePaths(int sr,int sc,int dr,int dc) {
if(sr==dr-1 && sc==dc-1){
ArrayList<String> nl=new ArrayList<>();
nl.add("");
return nl;
}
ArrayList<String> ral=new ArrayList<>();
for(int i=1;i<=dc-sc;i++){
ArrayList<String> hl=getMazePaths(sr,sc+i,dr,dc);
//This Should Work the Same as The Enhanced For loop Below it but its not producing same
//output
// for(int j=0;i<hl.size();j++){
// ral.add("h"+i+hl.get(j));
// }
for(String p:hl){
ral.add("h"+i+p);
}
}
for(int i=1;i<=dr-sr;i++){
ArrayList<String> vl=getMazePaths(sr+i,sc,dc);
// for(int j=0;i<vl.size();j++){
// ral.add("v"+i+vl.get(j));
// }
for(String p:vl){
ral.add("v"+i+p);
}
}
for(int i=1;i<=dc-sc && i<=dr-sr ;i++){
ArrayList<String> dl=getMazePaths(sr+i,dc);
// for(int j=0;i<dl.size();j++){
// String ss=dl.get(j);
// ral.add("d"+i+ss);
// }
for(String p:dl){
ral.add("d"+i+p);
}
}
return ral;
}
解决方法
您使用的是 i 而不是 j :
这个:
// for(int j=0;i<hl.size();j++){
// ral.add("h"+i+hl.get(j));
// }
应该是:
for(int j=0;j<hl.size();j++){
ral.add("h"+i+hl.get(j));
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。