Skip to main content

NQUEEN's PROBLEM

using System;
public class GFG
{
static int n;
static public void Main ()
{
var TC = Console.ReadLine();
int T = Convert.ToInt32(TC);
for(int a=0;a<T;a++)
{
    var no= Console.ReadLine();
     n = Convert.ToInt32(no);
    int [,]board =  new int [n,n];
    InitializeBoardWithZeros(board,n,n);
    SolveNQueen(board,0);
    PrintBoard(board,n,n);
}
}
static public void InitializeBoardWithZeros(int [,]board,int row,int col)
{
    for(int i=0;i<col;i++)
    {
        for(int j=0;j<row;j++)
        {
            board[i,j]=0;
        }
    }
   
}
static public void PrintBoard(int [,]board,int row,int col)
{
for(int i=0;i<col;i++)
    {
        for(int j=0;j<row;j++)
        {
            Console.Write(" {0}",board[i,j]);
        }
        Console.WriteLine();
    }
     Console.WriteLine();
}
static public bool SolveNQueen(int[,]board,int col)
{
if(col>=n)
return true;
//iterating for col 0 ,then 1,2 nd so on recursively
//here i=row
    for(int i=0;i<n;i++)
    {
if(IsSafe(board,i,col))
{
board[i,col]=1;
if(SolveNQueen(board,col+1))
return true;
    board[i,col]=0;
}
    }
    return false;
}
static public bool IsSafe(int[,]board,int row,int col)
{
//checking the elements in the same row - different column(horizontal line)
//here we are checking only the left side - fail first strategy
for(int i=0;i<col;i++)
{
if(board[row,i]==1)
return false;
}
//checking the upper diagonal to the left
for(int i=row,j=col;i>=0 && j>=0;i--,j--)
{
if(board[i,j]==1)
return false;
}
//checkinh the lower diagonal to the left
for(int i=row,j=col;i<n&&j>=0;i++,j--)
{
if(board[i,j]==1)
return false;
}
return true;
}
}


OUTPUT
n=5
 1 0 0 0 0
 0 0 0 1 0
 0 1 0 0 0
 0 0 0 0 1
 0 0 1 0 0

Comments

Popular posts from this blog

BEGINNER's ALPHABET PALINDROME

PRINT ALPHABET PALINDROMIC PYRAMID USING C# using System; public class Test {       public static void Main()       {             var number = Console.ReadLine();             int n = Convert.ToInt32(number);             Pattern print = new Pattern();             print.PrintPalindromePattern(n);       } } public class Pattern {       public void PrintPalindromePattern(int n)       {             int dummy = 1;             char letter = 'A';             int reversep...

Print word pattern - odd letters - beginner's code

1. Print the word with odd letters as P M R A O R G O R R A P M Solution: using System; public class Test { public static void Main() { string text = Console.ReadLine(); int n=text.Length; Pattern print = new Pattern (); print.XPattern(text,n); } } public class Pattern { public void XPattern(string text,int n) { char[] textarray = text.ToCharArray(); int reverseprinter = n-1; int middleLetter = n/2; for(int i=0;i<n;i++) { for(int j=0;j<n;j++) { if(i==j && j!=middleLetter) { Console.Write(textarray[j]); } else if(j==reverseprinter) { Console.Write(textarray[reverseprinter]); reverseprinter--; } else { Console.Write("*"); } } Console.WriteLine(); } } } OUTPUT Please Enter text: INPUT : program p m r a o r g o r r a p m

MINIMUM DISTANCE BETWEEN TWO SIMILAR STRINGS

LATEST using System ; using System . Linq ; public class Test { public static void Main () { int arrayLength ; int T = Convert . ToInt32 ( Console . ReadLine ()); for ( int i = 0 ; i < T ; i ++) { arrayLength = Convert . ToInt32 ( Console . ReadLine ()); string Line = Console . ReadLine (); GetMinimumDistanceBetweenStrings ( arrayLength , Line ); } } public static void GetMinimumDistanceBetweenStrings ( int length , string Line ) { int min = - 1 ; int initial = 0 ; string [] stringArray = Line . Split ( " " ); for ( int start = 0 ; start < length - 1 ; start ++) { for ( int a = start + 1 ; a <= length - 1 ; a ++) { if ( stringArray [ start ]== stringArray [ a ]) { if ( initial == 0 ) ...