12345/234/789 如何组号输出

wjsdwbw 2011-06-08 10:32:26
打印成3个数为一组的(5*3*3=45)组号码?

格式:
127 128 129 137 138 139 147 148 149 227
228 229 237 238 239 247 248 249 327 328
329 337 338 339 347 348 349 427 428 429
437 438 439 447 448 449 527 528 529 537
538 539 547 548 549
...全文
296 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
wjsdwbw 2011-06-10
  • 打赏
  • 举报
回复
谢谢阿宝,及各位兄弟的帮忙!
qybao 2011-06-09
  • 打赏
  • 举报
回复
算法有了,LZ就不会自己改一下?是不会还是懒?

import java.io.*;
import java.util.*;

class Test {
public static void main(String[] args) {
try {
String filename = "dingwei.txt";
BufferedReader br = new BufferedReader(new InputStreamReader(
new FileInputStream(filename)));
for (String buf = br.readLine(); buf != null; buf = br.readLine()) {
String[] data = buf.split("/");
char[][] c = new char[data.length][];
for (int i=0; i<c.length; i++) {
c[i] = data[i].toCharArray();
}
doCombine(c);
System.out.println();
}
br.close();
} catch (Throwable e) {
e.printStackTrace();
}
}

public static void doCombine(char[][] c) {
int[] idx = new int[c.length];
Arrays.fill(idx, 0);
List<String> result = new ArrayList<String>();
while (true) {
StringBuilder sb = new StringBuilder();
for (int i=0; i<idx.length; i++) {
sb.append(c[i][idx[i]]);
}
result.add(sb.toString());
idx[idx.length-1]++;
for (int i=idx.length-1; i>0; i--) {
if (idx[i] == c[i].length) {
idx[i] = 0;
idx[i-1]++;
}
}
if (idx[0] == c[0].length) {break;}
}
for (int i=0; i<result.size(); i++) {
System.out.printf("%s ", result.get(i));
if ((i+1)%10 == 0) {System.out.println();}
}
System.out.println();
}
}
fskjb01 2011-06-09
  • 打赏
  • 举报
回复
嵌套3层for循环来个穷举是不是这样啊
wjsdwbw 2011-06-09
  • 打赏
  • 举报
回复
对不起各位:可能没说明白。
原题:
文件dingwei.txt中的内容是:
12345/234/789
01246/01246/01247
12478/23456/258
678/268/357
要求:读取文件内容,对数据进行处理,使输出内容与下面一致。

127 128 129 137 138 139 147 148 149 227
228 229 237 238 239 247 248 249 327 328
329 337 338 339 347 348 349 427 428 429
437 438 439 447 448 449 527 528 529 537
538 539 547 548 549

000 001 002 004 007 010 011 012 014 017
020 021 022 024 027 040 041 042 044 047
060 061 062 064 067 100 101 102 104 107
110 111 112 114 117 120 121 122 124 127
140 141 142 144 147 160 161 162 164 167
200 201 202 204 207 210 211 212 214 217
220 221 222 224 227 240 241 242 244 247
260 261 262 264 267 400 401 402 404 407
410 411 412 414 417 420 421 422 424 427
440 441 442 444 447 460 461 462 464 467
600 601 602 604 607 610 611 612 614 617
620 621 622 624 627 640 641 642 644 647
660 661 662 664 667

122 125 128 132 135 138 142 145 148 152
155 158 162 165 168 222 225 228 232 235
238 242 245 248 252 255 258 262 265 268
422 425 428 432 435 438 442 445 448 452
455 458 462 465 468 722 725 728 732 735
738 742 745 748 752 755 758 762 765 768
822 825 828 832 835 838 842 845 848 852
855 858 862 865 868

623 625 627 663 665 667 683 685 687 723
725 727 763 765 767 783 785 787 823 825
827 863 865 867 883 885 887

qybao 2011-06-09
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 chenchenyangll 的回复:]
引用 3 楼 qybao 的回复:

没明白?5*3*3=45有什么意义?是要求三个数为一组的数字,各个数字相乘结果为45?


看帖子标题

一共3组数字 12345/234/789
这3组数字每组去一个数字 共有多少中可能吧

5 * 3 * 3 = 45种可能
[/Quote]
又是这种问题,在你说的那个帖子链接里好像我也有回复


import java.util.*;
class Test {
public static void main(String[] args) {
int[] a = {1,2,3,4, 5};
int[] b = {2,3,4};
int[] c = {7,8,9};
int[][] all = {a, b, c};

int[] idx = new int[all.length];
Arrays.fill(idx, 0);
List<String> result = new ArrayList<String>();
while (true) {
StringBuilder sb = new StringBuilder();
for (int i=0; i<idx.length; i++) {
sb.append(all[i][idx[i]]);
}
result.add(sb.toString());
idx[idx.length-1]++;
for (int i=idx.length-1; i>0; i--) {
if (idx[i] == all[i].length) {
idx[i] = 0;
idx[i-1]++;
}
}
if (idx[0] == all[0].length) {break;}
}
for (int i=0; i<result.size(); i++) {
System.out.printf("%s ", result.get(i));
if ((i+1)%10 == 0) {System.out.println();}
}
}
}

chenchenyangll 2011-06-09
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 qybao 的回复:]

没明白?5*3*3=45有什么意义?是要求三个数为一组的数字,各个数字相乘结果为45?
[/Quote]

看帖子标题

一共3组数字 12345/234/789
这3组数字每组去一个数字 共有多少中可能吧

5 * 3 * 3 = 45种可能
qybao 2011-06-08
  • 打赏
  • 举报
回复
没明白?5*3*3=45有什么意义?是要求三个数为一组的数字,各个数字相乘结果为45?
chenchenyangll 2011-06-08
  • 打赏
  • 举报
回复
http://topic.csdn.net/u/20110527/14/a0a50d66-98c1-4523-a7f2-a8d0a3823366.html

这个贴和你的问题类似 仔细看回复吧
chenchenyangll 2011-06-08
  • 打赏
  • 举报
回复
最简单的 遍历 3重循环

复杂点的 递归

62,614

社区成员

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

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