public static boolean isOk(int i, int n) {
boolean[] flag = new boolean[10];
Arrays.fill(flag, false);
int num = i;
int count = 0;
while(num > 0) {
int temp = num % 10;
if(!flag[temp]) {
flag[temp] = true;
count ++;
}
else return false;
num /= 10;
}
num = i * n;
while(num > 0) {
int temp = num % 10;
if(!flag[temp]) {
flag[temp] = true;
count ++;
} else return false;
num /= 10;
}
if(count == 10 || (count == 9 && !flag[0])) return true;
return false;
}
public static List<String> division(int n) {
List<String> ans = new ArrayList<>();
for(int i = 0; i * n < 98766; i ++) {
if(isOk(i, n)) {
StringBuilder sb = new StringBuilder();
sb.append(i * n);
sb.append(‘/‘);
sb.append(i);
ans.add(sb.toString());
}
}
return ans;
}
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class GetPermutation {
public static void getPermutation(List<List<Integer>> list, int n, int[] arr, int cur) {
if(n == cur) {
List<Integer> temp = new ArrayList<>();
for(int i = 0; i < cur; i ++) {
temp.add(arr[i]);
}
list.add(temp);
return;
} else for(int i = 1; i <= n; i ++) {
boolean flag = true;
for(int j = 0; j < cur; j ++) {
if(arr[j] == i) flag = false;
}
if(flag) {
arr[cur] = i;
getPermutation(list, n, arr, cur + 1);
}
}
}
public static void main(String[] args) {
int n = 4;
int[] arr = new int[n];
List<List<Integer>> list = new ArrayList<>(n);
getPermutation(list, n, arr, 0);
System.out.println(list);
}
}
public static void print(int n, int s) {
for(int i = 0; i < n; i ++) {
if((s & (1 << i)) > 0) { // 判断数字s二进制位上的每一位是否为1
System.out.print(i + " ");
}
}
System.out.println();
}
public static void main(String[] args) {
int n = 3;
for(int i = 1; i < (1 << n); i ++) {
print(n, i);
}
}
原文:https://www.cnblogs.com/bianjunting/p/14678688.html