对于排列后的数据,判断数据是否满足特定需求(此处为是否能够被7整除)
package search;
import java.util.*;
public class test {
static List<String> result = new ArrayList<String>();
public static void main(String[] args) {
String[] array = {"1","1","2"};
Arrangement.doFullArrangement(array);
}
}
class Arrangement {
static int count;
static List ls = new ArrayList();
public static void doFullArrangement(String[] array) {
getAllOrder(array, 0, array.length);
System.out.println(ls);
int num = 0;
for(int i = 0; i < ls.size(); i++){ //遍历集合
String s = ls.get(i).toString(); //将集合中取出的元素变为string类型
int result = Integer.parseInt(s);//string类型转为int
// System.out.println(s);
if(result % 7 == 0){ //判断是否能够被7整除(也可以调整为其他数据)
num ++;
}
}
System.out.println(num);
}
// static StringBuffer s = new StringBuffer();
private static void getAllOrder(Object[] array, int start, int end) {
//定义一个拼接字符
StringBuffer s = new StringBuffer();
if(start == end) {
for(int i = 0; i <array.length; i++){
//将每一次循环出数组的元素放入s中,拼接成为一个字符串
s.append(array[i]);
}
ls.add(s); //将拼接后的字符串放入集合中
} else {
for(int i = start; i < end; i++) {
swap(array, start, i);//试探
getAllOrder(array, start + 1, end);
swap(array, i, start);//回溯
}
}
}
//数组中的两个元素交换位置
private static void swap(Object[] array, int i, int j) {
if(i == j) {
return;
}
Object temp = array[i];
array[i] = array[j];
array[j] = temp;
}
}
运算结果:
2为排列后能被7整除的数据个数