public class gray {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int num = (int)Math.pow(2, n);//根据输入的整数,计算出此Gray序列大小
String[] s1 = {"0","1"};//第一个Gray序列
for(int i=2;i<=n;i++){//循环根据第一个Gray序列,来一个一个的求
int p = (int)Math.pow(2, i);//到了第几个的时候,来计算出此Gray序列大小
String[] si = new String[p];
for(int j=0;j<p;j++){//循环根据某个Gray序列,来一个一个的求此序列
if(j<(p/2)){
si[j] = "0" + s1[j];//原始序列前面加上"0"
}else{
si[j] = "1" + s1[p-j-1];//原始序列反序,前面加上"1"
}
}
s1 = si;//把求得的si,附给s1,以便求下一个Gray序列
}
for(int i=0;i<num;i++){
System.out.println(s1[i]);
}
}
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int num = (int)Math.pow(2, n);//根据输入的整数,计算出此Gray序列大小
String[] s1 = {"0","1"};//第一个Gray序列
for(int i=2;i<=n;i++){//循环根据第一个Gray序列,来一个一个的求
int p = (int)Math.pow(2, i);//到了第几个的时候,来计算出此Gray序列大小
String[] si = new String[p];
for(int j=0;j<p;j++){//循环根据某个Gray序列,来一个一个的求此序列
if(j<(p/2)){
si[j] = "0" + s1[j];//原始序列前面加上"0"
}else{
si[j] = "1" + s1[p-j-1];//原始序列反序,前面加上"1"
}
}
s1 = si;//把求得的si,附给s1,以便求下一个Gray序列
}
for(int i=0;i<num;i++){
System.out.println(s1[i]);
}
}
}
本文介绍了一种使用Java实现的灰码序列生成算法。通过用户输入的整数n,程序能够计算并输出长度为2^n的灰码序列。灰码是一种二进制数字系统,在两个连续数值的代码之间仅有一位不同。文章中的代码采用迭代方式逐步构建更长的灰码序列。
2178

被折叠的 条评论
为什么被折叠?



