题目:如果一个字符串包含包含两个相邻的重复子串,则称它为容易的串,其他串称为困难的串
如:BB ABCDACABCAB ABCDABCD都是容易的,D,DC ABDAB
描述:
import java.util.Scanner;
public class Main {
static int count = 0;
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int L = sc.nextInt();
dfs(n,L,"");
}
public static void dfs(int n,int L,String pre) {
//一次遍历字符
for(char i='A';i<'A'+L;i++) {
//检查字符串是否是困难的串
if(isHard(pre,i)) {
String x = pre+i;
count++;
System.out.println(x);
if(count==n) {
System.exit(0);
}
dfs(n,L,x);
}
}
}
public static boolean isHard(String pre,char i) {
//每一次变化的位数
int shu = 0;
for(int j=pre.length()-1;j>=0;j-=2) {
String a = pre.substring(j,j+shu+1);
String b = pre.substring(j+shu+1)+i;
if(a.equals(b))
return false;
//如果是困难的串位数+1
shu++;
}
return true;
}
}