extendedlightsout.java
来自「PKU中一些数据结构基本算法题的java实现」· Java 代码 · 共 105 行
JAVA
105 行
import java.util.Scanner;
public class EXTENDEDLIGHTSOUT {
static int[] A;
static int[] B;
static int[] C;
static int Col = 6;
static int Row = 5;
static int step;
static int min;
static int num;
/**
* @param args
*/
public static void main(String[] args) {
Scanner cin = new Scanner(System.in);
int caseNum = cin.nextInt();
for(int k=0;k<caseNum;k++){
min = Col*Col+1;
step = 0;
A = new int[Row+2];
C = new int[Row+2];
for(int i=1;i<=Row;i++){
int num=0;
for(int j=1;j<=Col;j++){
int c = cin.nextInt();
if(c==0){
num = num << 1;
}
else{
num = num << 1;
num+=1;
}
}
A[i] = num;
}
solve();
System.out.println("PUZZLE #" + (k+1));
output();
}
}
static void output(){
for(int i=1;i<=Row;i++){
StringBuffer str = new StringBuffer();
for(int j=0;j<Col;j++){
C[i] = (C[i]<<1);
if((C[i] & num)!=0){
str.append("1 ");
}
else{
str.append("0 ");
}
}
str.deleteCharAt(str.length()-1);
System.out.println(str);
}
}
static void solve(){
int T = 0;
num = 2<<(Col-1);
for(int i=0;i<num;i++){
B = A.clone();
T = i;
B[1] = (B[1]^(T<<1)^T^(T>>1)) & (num-1);
B[2] = B[2]^T;
C[1] = T;
for(int j=2;j<=Row;j++){
T = B[j-1];
C[j] = T;
B[j-1] = T^B[j-1];
B[j] = (B[j]^(T<<1)^T^(T>>1)) & (num-1);
// & (1<<size-1)
B[j+1] = T^B[j+1];
}
if(B[Row]==0){
return;
}
}
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?