NQueen
NQueen
NQueen
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;
}
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);
}
}
}
}
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)
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;
}
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];
}
}