DAA Record
DAA Record
To Write a C program for Performing Binary Search Operation using Divide and
Conquer Approach.
ALGORITHM:
//PROGRAM FOR BINARY SEARCH:-
#include<stdio.h>
int binary_search(int [], int, int, int); //Declaration of Recursive Function "binary()"
int main()
for(i=1;i<=n;i++)
scanf("%d", &search);
low=1;high=n; //Assigning the first and last element of array to low and high
if(c==0)
return 0;
if(search==a[low])
{
exit(0);
else
exit(0);
c++;
exit(0);
}
}
OUTPUT:
RESULT:
Thus the above C program for Performing Binary Search Operation using Divide
and Conquer Approach was executed successfully.
ALGORITHM:
int main()
for(i=0;i<n;i++)
low=0;high=n-1; //ASSIGNING THE LAST AND FIRST INDEX POSITION TO LOW AND HIGH
return 0;
*max=a[low];
*min=a[high];
*max=a[low];
*min=a[high];
else
*max=a[high];
*min=a[low];
else
*max=rmax;
else
*max=lmax;
*min=lmin;
else
*min=rmin;
OUTPUT:
CRITERIA MAXIMUM MARKS MARKS OBTAINED
10
PROGRAM AND EXECUTION
5
OUTPUT
10
VIVA
25
Total
RESULT:
Thus the above C program for Performing Maximum and Minimum Operation
using Divide and Conquer Approach was executed successfully
ALGORITHM:
float x[10],r[10];
int main()
int n,j,i,temp,temp1,temp3;
float max;
printf("\n\t\t\t\tKNAPSACK PROBLEM");
for(i=1;i<=n;i++)
printf("\n");
printf("\tWEIGHT \tPROFIT");
for(i=1;i<=n;i++)
printf("\n");
for(i=1;i<=n;i++)
for(i=j;i<=n;i++)
temp=w[i];
w[i+1]=temp;
temp1=p[i];
p[i+1]=temp1;
temp3=r[i];
r[i+1]=temp3;
printf("\n________________________________________________________________________________");
printf("\n________________________________________________________________________________");
printf("\n");
printf("\tWEIGHT \tPROFIT");
for(i=1;i<=n;i++)
}
knapsack(max,n);//Calling knapsack function
int i;
float profit,cu,p1[10];
for(i=1;i<=n;i++)
x[i]=0;
cu=max;
for(i=1;i<=n;i++)
if(w[i]>cu)
break;
else
x[i]=1;
cu=cu-w[i];
if(i<=n)
x[i]=(cu/w[i]);
profit=0.0;
printf("\n");
for(i=1;i<=n;i++)
p1[i]=p[i]*x[i];
printf("\nPROFIT FROM W%d : %f",i,p1[i]);
printf("\n");
for(i=1;i<=n;i++)
{ profit=profit+p1[i];
OUTPUT:
RESULT:
Thus the above C program for Performing Knapsack Problem using Greedy
Approach was executed successfully.
ALGORITHM:
int main()
printf("\n\t\t\t\tPRIMS PROGRAM");
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
for(i=1;i<=n-1;i++)
for(j=i+1;j<=n;j++)
scanf("%d",&cost[i][j]);
cost[j][i]=cost[i][j];
if(cost[i][j]<min)
// BY COMPARING ALL THE EDGE COST AND FIND OUT THE MINIMUM EDGE COST
min=cost[i][j];
k=i;
l=j;
mincost=cost[k][l];// ASSIGN THE MINIMUM EDGE COST VALUE TO THE VARIABLE MINCOST
for(i=1;i<=n;i++)
if(cost[i][l]<cost[i][k])
else
ner[k]=ner[l]=0;
for(i=2;i<n;i++)
min=x;
for(k=1;k<=n;k++)
if(ner[k]!=0)
if(cost[k][ner[k]]<min)
//FINDING THE NEXT MINIMUM EDGE BASED ON NEAR VALUE AND MIN VALUE
j=k;
}
mincost+=cost[j][ner[j]];//UPDATION OF MINCOST
ner[j]=0;
for(k=1;k<=n;k++)//UPDATION OF NEAR
if((ner[k]!=0)&&(cost[k][ner[k]]>cost[k][j]))
ner[k]=j;
for(i=1;i<=n-1;i++)
printf("%d->%d ",t[i][1],t[i][2]);
return 0;
OUTPUT:
CRITERIA MAXIMUM MARKS MARKS OBTAINED
10
PROGRAM AND EXECUTION
5
OUTPUT
10
VIVA
25
Total
RESULT:
Thus the above C program for Performing Minimum spanning Tree- Prim’s
Algorithm using Greedy Approach was executed successfully.
ALGORITHM:
int find1(int);
int parent[100];
while(parent[i]>=0)
i=parent[i];
return(i);
parent[x1]=x2;
int main()
int mincost,n1,r,te,n,u,v,i,j,k;
printf("\n\t\t\t\tKRUSKAL PROGRAM");
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
}
}
for(i=1;i<=n;i++)
for(j=i+1;j<=n;j++)
printf("a[%d][%d]=",i,j);
a[j][i]=a[i][j];
//PICKING MINIMUM COST EDGE ONE BY ONE ANDREARRANGING THE THE DATA BASED ON
MINIMUM VALUE
k=1;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
if((i<j)&&(a[i][j]!=9999))
x[k]=i;
y[k]=j;
z[k]=a[i][j];
k++;
for(i=1;i<k;i++)
for(j=1;j<k;j++)
if(i<j)
if(z[i]>z[j])
{
te=z[i];
z[i]=z[j];
z[j]=te;
te=x[i];
x[i]=x[j];
x[j]=te;
te=y[i];
y[i]=y[j];
y[j]=te;
n1=k-1;
for(i=1;i<=n;i++)
parent[i]=-1;
r=1;
i=0;
u=x[r];
v=y[r];
j=find1(u);
k=find1(v);
if(j!=k)
i=i+1;
t[i][1]=u;//UPDATION OF TRAVEL PATH
union1(j,k);
r++;
if(i!=n-1)
for(i=1;i<=n-1;i++)
OUTPUT:
CRITERIA MAXIMUM MARKS MARKS OBTAINED
10
PROGRAM AND EXECUTION
5
OUTPUT
10
VIVA
25
Total
RESULT:
Thus the above C program for Performing Minimum spanning Tree- Kruskal’s
Algorithm using Greedy Approach was executed successfully.
ALGORITHM:
int i,j;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
for(i=1;i<=n;i++)
weight = INFINITY;
for(i=1;i<=n;i++)
if(visit[i] == 0 && dist[i] < weight) //Checking for not yet visited node and
distance less than infinity
{
weight = dist[i];
node=i;
return node;
dist[v]=0;
for(i=1;i<=n;i++)
u=nearest();//Function Call
for(v=1;v<=n;v++)
if(cost[u][v] == INFINITY)
continue;
dist[v] = alt;
int i,j;
printf("\nCOST MATRIX\n");
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
printf("\n");
int main()
printf("\n\t\t\t\tDIJKSTRA PROGRAM");
Initial(n);//Function Call
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
}
}
display();//Function Call
Dijkstra(v);//Function Call
printf("\nRESULT...");
for(i=1;i<=n;i++)
printf("\nDISTANCE OF %d IS...",i);
printf("\n");
return 0;
OUTPUT:
CRITERIA MAXIMUM MARKS MARKS OBTAINED
10
PROGRAM AND EXECUTION
5
OUTPUT
10
VIVA
25
Total
RESULT:
Thus the above C program for Performing Single Source shortest path - Djistra’s
Algorithm using Greedy Approach was executed successfully.
EX NO : 6 MULTISTAGE GRAPHS – DYNAMIC PROGRAMMING DATE:
AIM:
To Write a C program for Performing Multi stage graph operation using Dynamic
Programming Approach.
ALGORITHM:
SOURCE CODE FOR MULTISTAGE GRAPH:
int main()
printf("\n\t\t\t\tMULTISTAGE GRAPH");
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
for(i=1;i<=ed;i++)
c[j][r]=edgecost;
for(j=n-1;j>=1;j--)
{
edgecost=9999;
for(i=1;i<=n;i++)
if(c[j][i]==9999)
continue;
if(edgecost>l)
edgecost=l;
r=i;
cost[j]=edgecost;
d[j]=r;
p[1]=1;
p[k]=n;
for(j=2;j<k;j++)
printf("\nPATH...");
for(i=1;i<=k;i++)
return 0;
OUTPUT:
RESULT:
Thus the above C program for Performing Multi stage graph operation using
Dynamic Programming Approach was executed successfully.
To Write a C program for Performing All pair shortest path operation using
Dynamic Programming Approach.
ALGORITHM:
int cost[20][20],n;
int main()
int i,j;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
return 0;
int i,j,k,a[20][20];
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
}
}
for(k=1;k<=n;k++)
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
a[i][j]=a[i][j];
else
a[i][j]=(a[i][k]+a[k][j]);
printf("STEP...%d\n",k);
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
printf("\n");
}
OUTPUT:
RESULT:
Thus the above C program for Performing All pair shortest path operation using
Dynamic Programming Approach was executed successfully.
AIM:
To Write a C program for Performing Traveling Salesman Problem using
Dynamic Programming Approach.
ALGORITHM:
#include<stdio.h>
int ary[10][10],completed[10],n,cost=0;
void takeInput()
{
int i,j;
printf("Enter the number of villages: ");
scanf("%d",&n);
printf("\nEnter the Cost Matrix\n");
for(i=0;i < n;i++)
{
printf("\nEnter Elements of Row: %d\n",i+1);
for( j=0;j < n;j++)
scanf("%d",&ary[i][j]);
completed[i]=0;
}
printf("\n\nThe cost list is:");
for( i=0;i < n;i++)
{
printf("\n");
for(j=0;j < n;j++)
printf("\t%d",ary[i][j]);
}
}
void mincost(int city)
{
int i,ncity;
completed[city]=1;
printf("%d--->",city+1);
ncity=least(city);
if(ncity==999)
{
ncity=0;
printf("%d",ncity+1);
cost+=ary[city][ncity];
return;
}
mincost(ncity);
}
int least(int c)
{
int i,nc=999;
int min=999,kmin;
for(i=0;i < n;i++)
{
if((ary[c][i]!=0)&&(completed[i]==0))
if(ary[c][i]+ary[i][c] < min)
{
min=ary[i][0]+ary[c][i];
kmin=ary[c][i];
nc=i;
}
}
if(min!=999)
cost+=kmin;
return nc;
}
int main()
{
takeInput();
printf("\n\nThe Path is:\n");
mincost(0); //passing 0 because starting vertex
printf("\n\nMinimum cost is %d\n ",cost);
return 0;
}
OUTPUT:
CRITERIA MAXIMUM MARKS MARKS OBTAINED
10
PROGRAM AND EXECUTION
5
OUTPUT
10
VIVA
25
Total
RESULT:
Thus, the above C program for Performing Traveling Salesman Problem using
Dynamic Programming Approach was executed successfully.
ALGORITHM:
int place(int);//Function declaration for doing whether a new queen can be placed or not
int x[20];
int main()
int n;
printf("\n\t\t\t\tNQUEENS PROBLEM\n");
return 0;
int k,i;
k=1;
while(k>0)
x[k]=x[k]+1;
while((x[k]<=n)&&(!place(k)))
x[k]=x[k]+1;
if(x[k]<=n)
{
if(k==n)
printf("\n");
for(i=1;i<=n;i++)
printf("->%d",x[i]);
printf("\n");
else
k=k+1;
x[k]=0;
else
k=k-1;
int i;
for(i=1;i<=k-1;i++)
return(0);
return(1);
OUTPUT:
RESULT:
ALGORITHM:
int w[10],m,x[20];
int main()
intn,i,r=0,k=1,s=0;
printf("\n\t\t\t\tSUM OF SUBSET");
for(i=1;i<=n;i++)
for(i=1;i<=m;i++)
r=r+w[i];
int j;
if((s+w[k]==m))
for(j=1;j<=k;j++)
{
else if((s+w[k]+w[k+1])<=m)
x[k]=0;
OUTPUT:
CRITERIA MAXIMUM MARKS MARKS OBTAINED
10
PROGRAM AND EXECUTION
5
OUTPUT
10
VIVA
25
Total
RESULT:
Thus the above C program for Performing Sum of Subsets operation using
Backtracking Approach was executed successfully.
To Write a C program for Performing 0/1 Knapsack Problem using Branch and
Bound Programming Approach.
ALGORITHM:
#include<stdio.h>
int max(int a, int b) {
if(a>b){
return a;
} else {
return b;
int i, w;
int knap[n+1][W+1];
if (i==0 || w==0)
knap[i][w] = 0;
else
knap[i][w] = knap[i-1][w];
return knap[n][W];
int main() {
int n;
scanf("%d",&n);
int val[20];
int wt[20];
int W ;
for(int i=0;i<n;i++){
scanf("%d",&val[i]);
for(int i=0;i<n;i++){
scanf("%d",&wt[i]);
scanf("%d",&W);
return 0;
OUTPUT:
CRITERIA MAXIMUM MARKS MARKS OBTAINED
10
PROGRAM AND EXECUTION
5
OUTPUT
10
VIVA
25
Total
RESULT:
Thus the above C program for Performing 0/1 Knapsack Problem using Branch
and Bound Approach was executed successfully.
ALGORITHM:
#include<stdio.h>
int a[10][10],visited[10],n,cost=0;
void get()
int i,j;
scanf("%d",&n);
for( i=0;i<n;i++)
for( j=0;j<n;j++)
scanf("%d",&a[i][j]);
visited[i]=0;
for( i=0;i<n;i++)
printf("\n\n");
for( j=0;j<n;j++)
printf("\t%d",a[i][j]);
int i,ncity;
visited[city]=1;
printf("%d ->",city+1);
ncity=least(city);
if(ncity==999)
ncity=0;
printf("%d",ncity+1);
cost+=a[city][ncity];
return;
mincost(ncity);
int least(int c)
int i,nc=999;
int min=999,kmin;
for(i=0;i<n;i++)
if((a[c][i]!=0)&&(visited[i]==0))
if(a[c][i]<min)
min=a[i][0]+a[c][i];
kmin=a[c][i];
nc=i;
if(min!=999)
cost+=kmin;
return nc;
}
void put()
printf("\n\nMinimum cost:");
printf("%d",cost);
void main()
get();
mincost(0);
put();
OUTPUT:
CRITERIA MAXIMUM MARKS MARKS OBTAINED
10
PROGRAM AND EXECUTION
5
OUTPUT
10
VIVA
25
Total
RESULT:
Thus the above C program for Performing Traveling Salesman Problem using
Branch and Bound Approach was executed successfully.