Untitled
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(); } }