Java 穷举问题
答案:4 悬赏:50 手机版
解决时间 2021-03-28 10:24
- 提问者网友:送舟行
- 2021-03-27 23:49
Java 穷举问题
最佳答案
- 五星知识达人网友:神也偏爱
- 2021-03-28 00:49
没有什么是绝对的,什么叫这个问题没人会解决的?
这个我正好有相应的解法,等一下贴出来:
//不用穷举法,用递归
public class InnerLoops {
public static void main(String[] args) {
String a = "0123456789";//可变
int rows = 3;//可变
char[][] c = new char[rows][];
for(int i=0; i c[i]=a.toCharArray();
inner(c,0,0);
}
public static final void inner(char[][] array,int currentRow,int currentColumn){
if(currentColumn if(currentRow==array.length-1){
print(array);
}
if(hasNext(array,currentRow)){
inner(array,currentRow+1,0);
}
ring(array,currentRow);
inner(array,currentRow,currentColumn+1);
}
}
private static final boolean hasNext(char[][] array, int row) {
return array.length>row+1;
}
private static final void print(char[][] array) {
System.out.println(toString(array));
}
private static final String toString(char[][] array) {
String s = "";
for(int i=0; i s+=(array[i][0]);
return s;
}
//使row行上的数往前推一位,溢出的0位补到最后一位
private static final void ring(char[][] array, int row) {
char t = array[row][0];
for(int i=1; i array[row][i-1]=array[row][i];
array[row][array[row].length-1]=t;
}
}
这个我正好有相应的解法,等一下贴出来:
//不用穷举法,用递归
public class InnerLoops {
public static void main(String[] args) {
String a = "0123456789";//可变
int rows = 3;//可变
char[][] c = new char[rows][];
for(int i=0; i
inner(c,0,0);
}
public static final void inner(char[][] array,int currentRow,int currentColumn){
if(currentColumn if(currentRow==array.length-1){
print(array);
}
if(hasNext(array,currentRow)){
inner(array,currentRow+1,0);
}
ring(array,currentRow);
inner(array,currentRow,currentColumn+1);
}
}
private static final boolean hasNext(char[][] array, int row) {
return array.length>row+1;
}
private static final void print(char[][] array) {
System.out.println(toString(array));
}
private static final String toString(char[][] array) {
String s = "";
for(int i=0; i s+=(array[i][0]);
return s;
}
//使row行上的数往前推一位,溢出的0位补到最后一位
private static final void ring(char[][] array, int row) {
char t = array[row][0];
for(int i=1; i array[row][i-1]=array[row][i];
array[row][array[row].length-1]=t;
}
}
全部回答
- 1楼网友:梦中风几里
- 2021-03-28 02:45
疯狂循环就行了。然后把结果放入文件。
- 2楼网友:从此江山别
- 2021-03-28 02:24
62^8=218340105584896,就算楼主有耐心等上个把月,这么多东西放在哪里呢?
- 3楼网友:轮獄道
- 2021-03-28 01:14
lz要做密码攻击器?如果是就放弃吧,一个9位的,普通计算机要7~9年,13位的则要上百年。我真心不希望你就这样走了
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯