Search This Blog

Showing posts with label DAA (Design And Analysis Of Algorithms). Show all posts
Showing posts with label DAA (Design And Analysis Of Algorithms). Show all posts

Tuesday, 25 November 2014

Program to solve Eight Queen problem using backtracking technique



#include <stdio.h>
#include<conio.h>

int row[8],s=0;
int safe(int,int);

void putboard();
void queen(int);

int safe(int x, int y)
{
int i;
for(i=1;i<=y;i++)
if( row[y-i]==x || row[y-i]==x-i || row[y-i]==x+i)
return 0;
return 1;
}

void putboard()
{
int x,y;
printf("\nSolution # %d",++s);
printf(":\n---------------------------------\n");
for(y=0;y<8; y++)
{
for (x=0;x<8;x++)
if(x==row[y])
printf("| Q ");
else
printf("| ");
printf("|\n---------------------------------\n");
}
getch();
}

void queen(int y)
{
int x;
for(x=0;x<8;x++)
{
row[y-1]=x;
if( safe(x,y-1) )
if (y<8)
queen(y+1);
else
putboard();
}
}

void main()
{
clrscr();
queen(1);

getch();

}


OUTPUT

Download as Word File
Download as TEXT File
Download as PDF  

Program to perform Matrix Chain Multiplication



#include<stdio.h>
#include<conio.h>
#define MAX 15
#define INF 4294967295

int num,p[MAX+1],n;

void print(int [][MAX],int,int);
void matrixchainorder();
void setdata();
void printorder();

void print(int s[MAX][MAX],int i,int j)
{
if(i==j)
printf("A%d",num++);
else
{
printf("(");
print(s,i,s[i][j]);
printf(" x ");
print(s,s[i][j]+1,j);
printf(" ) ");
}
}

void matrixchainorder()
{
unsigned int q;
unsigned long m[MAX][MAX]={0};
int s[MAX][MAX]={0};
int l,j,i,k;
for(l=2;l<=n;l++)
for(i=1;i<=n-l+1;i++)
{
j=i+l-1;
m[i][j]=INF;
for(k=i;k<j;k++)
{
q=m[i][k] + m[k+1][j] + p[i-1]*p[k]*p[j];
if(q < m[i][j])
{
m[i][j]=q;
s[i][j]=k;
}
}
}
printf("Number of Multiplications are %d ",m[1][n]);
num=1;
printf("Order of Multiplication is: ");
print(s,1,n);
}

void setdata()
{
int i;
printf("\nEnter number of matrices: ");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
printf("Enter %d matrix size:",i);
scanf("%d%d",&p[i-1],&p[i]);
}
}
void printorder()
{
int i,j;
matrixchainorder();
}

void main()
{
clrscr();

setdata();
printorder();
getch();
}


OUTPUT





A program to perform All Pair Shortest Path problem



#include<stdio.h>
#include<conio.h>

int cost[20][20],n,a[20][20];
void setdata();
void getdata();
void path();

void setdata()
{
int i,j,k;
printf("\nEnter the number of nodes:");
scanf("%d",&n);
printf("\nEnter cost matrix(32767 for infinity):");
for(i=1;i<=n;i++)
{
printf("\nEnter %d row\n",i);
for(j=1;j<=n;j++)
{
scanf("%d",&cost[i][j]);
}
}
}

void getdata()
{
int i,j;
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
printf("%d ",a[i][j]);
}
printf("\n");
}
}

void path()
{
int i,j,k,l;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
a[i][j]=cost[i][j];
for(k=1;k<=n;k++)
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
{
l=a[i][k]+a[k][j];
a[i][j]=(a[i][j]>l)?l:a[i][j];
}
}

void main()
{
clrscr();
setdata();
path();
printf("\nMatrix with shortest path is:\n");
getdata();

getch();
}


OUTPUT