Consider a N X N chessboard with a Queen and K obstacles. The Queen cannot pass through obstacles. Given the position (x, y) of Queen, the task is to find the number of cells the queen can move.
Examples:
Input : N = 8, x = 4, y = 4,
K = 0
Output : 27
Input : N = 8, x = 4, y = 4,
K = 1, kx1 = 3, ky1 = 5
Output : 24
//JAVA CODE
import java.util.Arrays; import java.util.Scanner; public class Main { static int minimum_no(int a,int b){ if(a>=b) return b; return a; } static int totalsteps(int n,int k,int x,int y,int[]kx1,int[]ky1){ int up= n-x; int down=x-1; int left=y-1; int right=n-y; int left_diagnoalup=minimum_no(n-x,y-1); int left_diagnoaldown=minimum_no(x-1,y-1); int right_diagonalup=minimum_no(n-x,n-y); int right_diagonaldown=minimum_no(x-1,n-y); //obstacles for(int i=0;i<k;i++){ if(x>kx1[i] && y<ky1[i]){ int rd=minimum_no(kx1[i]-1,n-ky1[i] ) +1; right_diagonaldown -=minimum_no(left_diagnoaldown,rd); } if(x<kx1[i] && y<ky1[i]){ int ru=(minimum_no(n-kx1[i],n-ky1[i]) + 1); right_diagonalup -=minimum_no(ru,right_diagonalup); } if(x<kx1[i] && y>ky1[i]){ int lu=(minimum_no(n-kx1[i],ky1[i]-1) +1); left_diagnoalup -=minimum_no(lu,left_diagnoalup); } if(x>kx1[i] && y>ky1[i]){ int ld= minimum_no(kx1[i]-1,ky1[i]-1) +1; left_diagnoaldown-=minimum_no(ld,left_diagnoaldown); } if(x==kx1[i] && y>ky1[i]) left-=ky1[i]; if(x==kx1[i] && y<ky1[i]) right=(ky1[i]-y-1); if(y==ky1[i] && x<kx1[i]) up=(kx1[i]-x-1); if(y==ky1[i] && x>kx1[i]) down-=kx1[i]; } return up+down+left_diagnoaldown+left_diagnoalup+left+right+right_diagonaldown+right_diagonalup; } public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n=sc.nextInt(); int k=sc.nextInt(); int x=sc.nextInt(); int y=sc.nextInt(); int[]kx1= {3}; int[]ky1={5}; System.out.println(totalsteps(n,k,x,y,kx1,ky1)); } }
Nbibuce_pi Nicholas Patel https://marketplace.visualstudio.com/items?itemName=7rialatreste.Eternum-EX-gratuita-2021
ReplyDeleterifftuconfimb