1、产生无连续重复部分的字符串。(60分)
(1)描述:编写程序,产生由1,2,3这3个数字符号所构成、长度为n的字符串,并且在字符串中对于任何一个子串而言,都不会有相邻的、完全相同的子串;
(2)输入:字符串长度n;
(3)输出:无相邻重复子串的所有字符串,每个字符串换行输出。
package TeacherHomeWork;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Scanner;
public class RepeatStringTest {
public static void play(int n,int num[],int result[],int limit){
if(n==limit){
if(JudgeRepeat(result)){
for(int j=0;j<result.length;j++)
System.out.print(result[j]);
System.out.println();
}
return;
}
for(int i=0;i<num.length;i++){
result[n]=num[i];
play(n+1,num,result,limit);
}
}
public static boolean JudgeRepeat(int[] num){
String tempStr="";
for(int i=0;i<num.length;i++)
tempStr+=num[i];
if(tempStr.matches("(\\d+|\\b)(\\d+)\\2(\\d+|\\b)"))return false;
return true;
}
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
int num[]={1,2,3};
int limit=input.nextInt();
int result[]=new int[limit];
play(0,num,result,limit);
}
}