0% found this document useful (0 votes)
26 views4 pages

NQueen

Download as txt, pdf, or txt
Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1/ 4

// "static void main" must be defined in a public class.

public class Main {


public static void main(String[] args) {
int n=4;
int chess[][]=new int[n][n];
printQueen(chess,"",0);
}
public static void printQueen(int [][]chess,String qsf,int row){
if(row==chess.length){

System.out.println(qsf+".");
return;
}

for(int col=0;col<chess.length;col++){

if(isSafe(chess,row,col)){
chess[row][col]=1;
printQueen(chess,qsf+row+"-"+col+",",row+1); chess[row][col]=0;
}

}
}
public static boolean isSafe(int chess[][],int row,int col){

for(int i=row-1,j=col;i>=0;i--){
if(chess[i][j]==1){
return false;
}
}
for(int i=row-1,j=col-1;i>=0 && j>=0;i--,j--){
if(chess[i][j]==1){
return false;
}
}
for(int i=row-1,j=col+1;i>=0 && j<chess.length;i--,j++){
if(chess[i][j]==1){
return false;
}
}
return true;
}

*********************************Word Break gks***********


class Solution{

static List<String> wordBreak(int n, List<String> dict, String s)


{
List<String> result=new ArrayList<>();
// code here
find(dict,s," ",result);
return result;
}
public static void find(List<String> dict,String s,String ans,List<String>
result){

if(s.length()==0){
ans=ans.trim();
result.add(ans);
}

for(int i=0;i<s.length();i++){

String left=s.substring(0,i+1);
if(dict.contains(left)){
String right=s.substring(i+1);
System.out.println(ans+left+" ");
find(dict,right,ans+left+" ",result);
}
}
}
}

************************Partition array to K subsets **************


class Solution
{
public boolean isKPartitionPossible(int a[], int n, int k)
{
// Your code here
int sum=0;
for(int i:a){
sum+=i;
}
if(sum%k!=0)return false;
if(n<k)return false;
int subset=sum/k;
boolean visited[]=new boolean[n];
return canpartition(a,visited,0,k,0,subset);

public boolean canpartition(int nums[],boolean []visited,int start,int k,int


sum,int subset){

if(k==0)return true;
if(sum>subset)return false;
if(sum==subset){
return canpartition(nums,visited,0,k-1,0,subset);
}
for(int i=start;i<nums.length;i++){
if(visited[i]) continue;
visited[i]=true;
if(canpartition(nums,visited,i+1,k,sum+nums[i],subset)) return true;
visited[i]=false;
}
return false;
}
}
Input:
N = 5
a[] = {2,1,4,5,6}
K = 3
Output:
1
Explanation: we can divide above array
into 3 parts with equal sum as (2, 4),
(1, 5), (6)

*************************************Partition Equal Subset Sum


************************
class Solution{
static Boolean[][] dp;
static int equalPartition(int N, int arr[])
{
// code here

boolean value= isSubset(N,arr);


if(value){
return 1;
}
return 0;
}

static boolean isSubset(int N,int arr[]){


int sum=0;
for(int i=0;i<arr.length;i++){
sum+=arr[i];
}

dp=new Boolean[sum+1][N+1];
for(int i=0;i<=sum;i++)
{
for(int j=0;j<=N;j++){
dp[i][j]=null;
}
}
if(sum%2==0){
return partition(arr,sum/2,N);
}
else
return false;
}

static boolean partition(int arr[],int sum,int N){


if (sum == 0)
return true;
if(N==0 && sum!=0){
return false;
}

if(dp[sum][N]!=null){
return dp[sum][N];
}

if(arr[N-1]>sum){
dp[sum][N]= partition(arr,sum,N-1);
}
else{
dp[sum][N]=partition(arr,sum-arr[N-1],N-1)|| partition(arr,sum,N-1);

}
// subsetSumMem[targetSum][n] = partition(arr, sum - arr[n - 1], N - 1,dp)
// || partition(arr, Sum, N - 1);
return dp[sum][N];
}
}

You might also like