Untitled

mail@pastecode.io avatarunknown
plain_text
2 months ago
1.4 kB
3
Indexable
Never
import java.io.FileInputStream;
import java.util.Scanner;

public class Main {
	static {
		try {
			System.setIn(new FileInputStream("src/inp.txt"));
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	static Scanner scanner = new Scanner(System.in);
	static int dir[][]={{0,1},{1,0}},res;
	
	static void bt(int[][] a,boolean[][] vis,boolean[][]vis2,int x,int y) {
		if(x==7) {
			++res;
			return;
		}
		
		if(!vis[x][y]) {
			for(int i=0;i<2;++i) {
				int nx=x+dir[i][0],ny=y+dir[i][1];
				if(nx>=0 && nx<7 && ny>=0 && ny<8 && !vis[nx][ny]) {
					vis[x][y]=vis[nx][ny]=true;
					int min=Math.min(a[x][y],a[nx][ny]);
					int max=Math.max(a[x][y],a[nx][ny]);
					if(!vis2[min][max]) {
						vis2[min][max]=true;
						bt(a,vis,vis2,x,y);
						vis2[min][max]=false;
					}
					vis[x][y]=vis[nx][ny]=false;
				}
			}
		}
		else if(y+1<8)
			bt(a,vis,vis2,x,y+1);
		else
			bt(a,vis,vis2,x+1,0);
	}
	
	public static void main(String[] args) {
		int t=Integer.parseInt(scanner.next());
		
		for(int test=1;test<=t;++test) {
			int[][]a=new int[7][8];
			for(int i=0;i<7;++i) for(int j=0;j<8;++j)
				a[i][j]=Integer.parseInt(scanner.next());
			
			res=0;
			bt(a,new boolean[7][8],new boolean[7][7],0,0);
			System.out.printf("Case #%d\n%d\n",test,res);
		}
		
		scanner.close();
	}
}