R19CS380 Daa.
R19CS380 Daa.
B18CS4010
NAME : YASHAS C
SECTION & COURSE : F ; CSE
SRN : R19CS380
SEM : 4
1|Page
PROGRAM 1:
Search for a given pattern in a text string using Brute Force String Matching
SOURCE CODE
#include <stdio.h>
#include <string.h>
int main() {
int position;
gets(a);
gets(b);
if (position != -1) {
else {
printf("Not found.\n");
return 0;
2|Page
int c, d, e, text_length, pattern_length, position = -1;
text_length = strlen(text);
pattern_length = strlen(pattern);
return -1;
position = e = c;
if (pattern[d] == text[e]) {
e++;
else {
break;
if (d == pattern_length) {
return position;
return -1;
OUTPUT
3|Page
PROGRAM 2:
Sort a set of elements in ascending order using Quick Sort algorithm.
SOURCE CODE
#include<stdio.h>
if(first<last){
pivot=first;
i=first;
j=last;
4|Page
while(i<j){
while(number[i]<=number[pivot]&&i<last)
i++;
while(number[j]>number[pivot])
j--;
if(i<j){
temp=number[i];
number[i]=number[j];
number[j]=temp;
temp=number[pivot];
number[pivot]=number[j];
number[j]=temp;
quicksort(number,first,j-1);
quicksort(number,j+1,last);
void main()
scanf("%d",&count);
for(i=0;i<count;i++)
scanf("%d",&number[i]);
quicksort(number,0,count-1);
for(i=0;i<count;i++)
printf(" %d",number[i]);
5|Page
OUTPUT
Program 3a
Find minimum cost spanning tree of a given undirected graph using Kruskal’s
algorithm.
SOURCE CODE
#include<stdio.h>
int parent[MAX],cost[MAX][MAX],t[MAX][2];
int find(int v)
while(parent[v])
v=parent[v];
6|Page
}
return v;
parent[j]=i;
void kruskal(int n)
int i,j,k,u,v,mincost,res1,res2,sum=0;
for(k=1;k<n;k++)
mincost=INFINITY;
for(i=1;i<n;i++)
for(j=1;j<=n;j++)
if(i==j) continue;
if(cost[i][j]<mincost)
u=find(i);
v=find(j);
if(u!=v)
res1=i;
res2=j;
mincost=cost[i][j];
7|Page
union1(res1,find(res2));
t[k][1]=res1;
t[k][2]=res2;
sum=sum+mincost;
for(i=1;i<n;i++)
printf("%d->%d\n",t[i][1],t[i][2]);
void main()
int i,j,n;
scanf("%d",&n);
for(i=1;i<=n;i++)
parent[i]=0;
printf("\nEnter the cost adjacency matrix 0-for self edge and 999-if no edge\n");
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
scanf("%d",&cost[i][j]);
kruskal(n);
OUTPUT
8|Page
Program 3b
Find minimum cost spanning tree of a given undirected graph using prims
algorithm
SOURCE CODE
#include<stdio.h>
int i,j,sum=0,visited[10];
int distance[10],vertex[10];
int min,u,v;
for(i=1;i<=n;i++)
vertex[i]=source;
visited[i]=0;
distance[i]=cost[source][i];
9|Page
}
visited[source]=1;
for(i=1;i<n;i++)
min=INFINITY;
for(j=1;j<=n;j++)
if(!visited[j]&&distance[j]<min)
min=distance[j];
u=j;
visited[u]=1;
sum=sum+distance[u];
printf("\n%d->%d",vertex[u],u);
for(v=1;v<=n;v++)
if(!visited[v]&&cost[u][v]<distance[v])
distance[v]=cost[u][v];
vertex[v]=u;
return sum;
void main()
int a[10][10],n,i,j,m,source;
10 | P a g e
scanf("%d",&n);
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
scanf("%d",&a[i][j]);
scanf("%d",&source);
m=prim(a,source,n);
OUTPUT
Program 4
11 | P a g e
From a given vertex in a weighted connected graph, find shortest paths to other
vertices using Dijkstra’s algorithm.
SOURCE CODE
#include<stdio.h>
int visited[10],min,u;
int i,j;
for(i=1;i<=n;i++)
distance[i]=cost[source][i];
visited[i]=0;
visited[source]=1;
for(i=1;i<=n;i++)
min=INFINITY;
for(j=1;j<=n;j++)
min=distance[j];
u=j;
visited[u]=1;
for(j=1;j<=n;j++)
distance[j]=distance[u]+cost[u][j];
12 | P a g e
}
void main()
int n,cost[10][10],distance[10];
int i,j,source,sum;
scanf("%d",&n);
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
scanf("%d",&cost[i][j]);
scanf("%d",&source);
dijkstra(cost,n,source,distance);
for(i=1;i<=n;i++)
OUTPUT
13 | P a g e
Program 5
SOURCE CODE
#include<stdio.h>
int w[10],p[10],n;
return a>b?a:b;
14 | P a g e
if (w[i]>m) return knap(i+1,m);
return max(knap(i+1,m),knap(i+1,m-w[i])+p[i]);
void main()
int m,i,max_profit;
scanf("%d",&n);
scanf("%d",&m);
for(i=1;i<=n;i++)
scanf("%d%d",&p[i],&w[i]);
max_profit=knap(1,m);
OUTPUT
Program 6
15 | P a g e
SOURCE CODE
#include<stdio.h>
if(i<j)
return i;
else
return j;
int i,j,k;
for(k=1;k<=n;k++)
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
p[i][j]=min(p[i][j],p[i][k]+p[k][j]);
int main()
int i,j,n,a[10][10],d[10][10],source;
scanf("%d",&n);
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
scanf("%d",&a[i][j]);
floyd(n,a);
for(i=1;i<=n;i++)
16 | P a g e
for(j=1;j<=n;j++)
printf("%d\t",a[i][j]);
printf("\n");
return 0;
OUTPUT
Program 7
SOURCE CODE
#include<stdio.h>
int i,visit[20],n,adj[20][20],s,topo_order[10];
void dfs(int v)
int w;
17 | P a g e
visit[v]=1;
for(w=1;w<=n;w++)
dfs(w);
topo_order[i--]=v;
void main()
int v,w;
scanf("%d",&n);
for(v=1;v<=n;v++)
for(w=1;w<=n;w++)
scanf("%d",&adj[v][w]);
for(v=1;v<=n;v++)
visit[v]=0;
i=n;
for(v=1;v<=n;v++)
if(visit[v]==0)
dfs(v);
for(v=1;v<=n;v++)
printf("v%d ",topo_order[v]);
OUTPUT
18 | P a g e
Program 8
Implement Horspool’s algorithm for String Matching and find the number of
key comparisons in successful search and unsuccessful search
SOURCE CODE
#include<stdio.h>
#include<string.h>
int t[MAX];
int i,j,m;
m=strlen(p);
for (i=0;i<MAX;i++)
t[i]=m;
for (j=0;j<m-1;j++)
t[p[j]]=m-1-j;
int i,j,k,m,n;
19 | P a g e
n=strlen(src);
m=strlen(p);
printf("\nLength of text=%d",n);
i=m-1;
while(i<n) {
k=0;
while((k<m)&&(p[m-1-k]==src[i-k]))
k++;
if(k==m)
return(i-m+1); else
i+=t[src[i]];
return -1;
void main() {
char src[100],p[100];
int pos;
gets(src);
gets(p);
shifttable(p);
pos=horspool(src,p);
if(pos>=0)
printf("\n The desired pattern was found starting from position %d",pos+1); else
OUTPUT
20 | P a g e
Program 9
SOURCE CODE
#include <stdio.h>
int i, j;
c[i] = 0;
c[a[j]] = c[a[j]] + 1;
b[c[a[j]]] = a[j];
c[a[j]] = c[a[j]] - 1;
21 | P a g e
}
printf("%d,", b[i]);
void main()
int n, k = 0, a[15], i;
scanf("%d", &n);
scanf("%d", &a[i]);
if (a[i] > k) {
k = a[i];
counting_sort(a, k, n);
printf("\n");
OUTPUT
Program 10
22 | P a g e
Implement N Queen’s problem using back tracking.
SOURCE CODE
#include<stdio.h>
#include<stdlib.h>
#define MAX 50
int i;
for(i=0;i<r;i++)
if(c[i]==c[r] || (abs(c[i]-c[r])==abs(i-r)))
return 0;
return 1;
int i,j;
char cb[10][10];
for(i=0;i<n;i++)
for(j=0;j<n;j++)
cb[i][j]='-';
for(i=0;i<n;i++)
cb[i][c[i]]='Q';
for(i=0;i<n;i++)
for(j=0;j<n;j++)
printf("%c",cb[i][j]);
printf("\n");
23 | P a g e
void n_queens(int n)
int r;
int c[MAX];
c[0]= -1;
r=0;
while(r>=0)
c[r]++;
c[r]++;
if(c[r]<n)
if(r==n-1)
display(c,n);
printf("\n");
else
r++;
c[r]=-1;
else
r--;
void main()
int n;
24 | P a g e
printf("\nEnter the number of queens : ");
scanf("%d",&n);
n_queens(n);
OUTPUT
Program 11
SOURCE CODE
#include<stdio.h>
#include<conio.h>
struct BIG_MALL
int item_no,quantity;
float price;
char item_name[20];
}s[100],t;
void main()
25 | P a g e
{
int i,j,n;
float temp=3.2f;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&s[i].item_no);
scanf("%s",s[i].item_name);
scanf("%d",&s[i].quantity);
fflush(stdin);
scanf("%f",&temp);
s[i].price=temp;
for(i=0;i<n;i++)
printf("%d\t%s\t\t%d\t\t%3.2f\n", s[i].item_no,s[i].item_name,s[i].quantity,s[i].price);
for(i=0;i<n;i++)
for(j=0;j<n-1;j++)
if(s[j].quantity>s[j+1].quantity)
t=s[j];
s[j]=s[j+1];
26 | P a g e
s[j+1]=t;
for(i=0;i<n;i++)
printf("%d\t%s\t\t%d\t\t%3.2f\n", s[i].item_no,s[i].item_name,s[i].quantity,s[i].price);
OUTPUT
27 | P a g e
Program 12
SOURCE CODE
#include<stdio.h>
int visited[10];
int i,q[10],u;
int front=1,rear=1;
visited[source]=1;
q[rear]=source;
while(front<=rear)
u=q[front];
28 | P a g e
front=front+1;
for(i=1;i<=n;i++)
rear=rear+1;
q[rear]=i;
visited[i]=1;
void main()
int n,a[10][10],i,j,source;
scanf("%d",&n);
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
scanf("%d",&a[i][j]);
scanf("%d",&source);
for(i=1;i<=n;i++)
visited[i]=0;
bfs(n,a,source);
for(i=1;i<=n;i++)
if(visited[i]==0)
else
29 | P a g e
}
OUTPUT
30 | P a g e