如何遍历二维动态数组,生成所有可能的拼装结果?

teclogid 2006-07-03 05:44:02
需求如下:
二维动态字符串数组,如String[][] array=new String[][]{{"1","2","a","b"}}
现在要遍历这个数组,生成所有可能的字符串组合,比如1a,1b,2a,2b
如何实现?
...全文
247 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
navence 2006-07-04
  • 打赏
  • 举报
回复
public static void main(String[] args) throws Exception {
String[][] array = new String[][] { { "1", "2", "3" }, { "+", "-" }, { "a", "b", "c" }, { "=" } };
for (int i = 0; i < array[0].length; i++) {
String s = array[0][i];
add(array, s, 0);
}
}

public static void add(String[][] array, String s, int i) {
int k = i + 1;
if (k < array.length) {
for (int l = 0; l < array[k].length; l++) {
String s1 = s + array[k][l];
add(array, s1, k);
if (k == array.length - 1) {
System.out.println(s1);
}
}
}
}
teclogid 2006-07-04
  • 打赏
  • 举报
回复
navence(卡西C)
能给出个大概的代码吗?
navence 2006-07-04
  • 打赏
  • 举报
回复
跟汉诺塔算法相同的问题嘛,
递归一下就可以了
trumplet 2006-07-04
  • 打赏
  • 举报
回复
确有难度
wu_java 2006-07-04
  • 打赏
  • 举报
回复
理解楼主的意思
有一定难度
考虑中
teclogid 2006-07-04
  • 打赏
  • 举报
回复
trumplet(检查)
不是n维,是二维动态的数组【n】【m】。
关键是你无法确定n是多少,就没法知道写几个for循环了。
trumplet 2006-07-04
  • 打赏
  • 举报
回复
呵呵,你题目里说二维,我就弄了个二维。

n维的,就弄一个n重循环,不就行了吗
teclogid 2006-07-04
  • 打赏
  • 举报
回复
to trumplet(检查)
你那样只处理了,【2】【n】维的数组,我现在是【n】【m】维的数组。比如说,数组是{{1,2},{a,b},{c,d}} ,你那个就不正确了。
trumplet 2006-07-04
  • 打赏
  • 举报
回复
应该不会很难吧。

String[][] array=new String[][]{{"1","2","3"},{"a","b","c"}};
for (int i=0;i<array[0].length;i++){
for (int j=0;j<array[1].length;j++){
System.out.println(array[0][i] + array[1][j]);
}
}
teclogid 2006-07-04
  • 打赏
  • 举报
回复
我顶
trumplet 2006-07-04
  • 打赏
  • 举报
回复
原来如比,原来如些,原来如此
teclogid 2006-07-03
  • 打赏
  • 举报
回复
二维动态字符串数组,如String[][] array=new String[][]{{"1","2"},{"a","b"}}
不好意思,写错了。
每一维必取且只取一个字符串。
forest077 2006-07-03
  • 打赏
  • 举报
回复
该问题不明确。
首先,你的定义中只有一维有用,第二维没有用。那么我们写的算法是需要遍历一维还是二维?
其次,是生成所有两个字母的组合吗?1ab,2ab,12a,12ab需要生成吗?
请楼主把上述两个问题整理清楚一下。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧