public static boolean next(int[] count, int[] idx){
idx[0] = idx[0] + 1;
for(int i=0; i<idx.length; i++){
if(idx[i]>=count[i]){
if(i==idx.length-1){
return false;
}
idx[i+1] = idx[i+1] +1;
idx[i] = 0;
}else{
return true;
}
}
return false;
}
public static void genNames(){
String[] fileds = {
"赵钱",
"红青紫",
"花云天山海",
};
int[] counts = new int[fileds.length];
int[] idxs = new int[fileds.length];
for(int i=0; i<fileds.length; i++){
counts[i] = fileds[i].length();
idxs[i] = 0;
}
do {
String name = "";
for(int i=0; i<fileds.length; i++){
name += fileds[i].charAt(idxs[i]);
}
//System.out.print(name);
System.out.println(name);
}while (next(counts, idxs));
}
public static void main(String[] args) {
genNames();
}
运行结果:
============================
赵红花
钱红花
赵青花
钱青花
赵紫花
钱紫花
赵红云
钱红云
赵青云
钱青云
赵紫云
钱紫云
赵红天
钱红天
赵青天
钱青天
赵紫天
钱紫天
赵红山
钱红山
赵青山
钱青山
赵紫山
钱紫山
赵红海
钱红海
赵青海
钱青海
赵紫海
钱紫海