0% found this document useful (0 votes)
8 views17 pages

Daa 1

The document contains code snippets for several algorithms including minimum and maximum element, 0/1 knapsack, activity selection, job sequencing, coin change using greedy and dynamic programming, Floyd Warshall algorithm, and longest common subsequence.

Uploaded by

samanthaargent21
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
8 views17 pages

Daa 1

The document contains code snippets for several algorithms including minimum and maximum element, 0/1 knapsack, activity selection, job sequencing, coin change using greedy and dynamic programming, Floyd Warshall algorithm, and longest common subsequence.

Uploaded by

samanthaargent21
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 17

1.

Min Max:
#include<iostream>
using namespace std;

int a[100];
int max_val,min_val;

void minmax(int i,int j){

if(i==j){
max_val=a[i];
min_val=a[i];
}
else if(i==j-1){
if(a[i]>a[j]){
min_val=a[j];
max_val=a[i];
}
else{
min_val=a[i];
max_val=a[j];
}
}
else{
int mid=(i+j)/2;
minmax(i,mid);
int max1=max_val,min1=min_val;
minmax(mid+1,j);
if(min1<min_val) min_val=min1;
if(max1>max_val) max_val=max1;
}
}

int main(){
int n,i;
cin>>n;
for(i=0;i<n;i++){
cin>>a[i];
}
minmax(0,n-1);
cout<<"Max : "<<max_val<<" Min : "<<min_val;
return 0;
}

2 . 0/1 Knapsack using greedy:


#include<iostream>
using namespace std;
void swap(float *a,float *b){
float temp=*a;
*a=*b;
*b=temp;
}
float fractionalKnapsack(int n,float k,float w[],float nu[]){
float ratio[n];
int i;
float total_nutrition=0.0;
for(i=0;i<n;i++){
ratio[i]=nu[i]/w[i];
}
for(i=0;i<n-1;i++){
int j;
for(j=i;j<n;j++){
if(ratio[i]<ratio[j]){
swap(&ratio[i],&ratio[j]);
swap(&w[i],&w[j]);
swap(&nu[i],&nu[j]);
}
}
}
for(i=0;i<n;i++){
if(k>w[i]){
total_nutrition+=(float)(ratio[i]*w[i]);
k-=w[i];
}
else if(k==w[i]){
total_nutrition+=(float)(ratio[i]*w[i]);
return total_nutrition;
}
else{
float r;
r=(k*ratio[i]);
total_nutrition+=(float)r;
return total_nutrition;
}
}
}
int main(){
float k;
int n;
int i;
cout<<"Enter the knapsack value and number of fruits: ";
cin>>k>>n;
float weight[n],nutrition[n];
cout<<"\nEnter the weight and it's nutrition value of all such "<<n<<" fruits : ";
for(i=0;i<n;i++){
cin>>weight[i]>>nutrition[i];
}
fractionalKnapsack(n,k,weight,nutrition);
float val=fractionalKnapsack(n,k,weight,nutrition);
cout<<"\nMaximum nutrition value one can obtain is : "<<val<<endl;
return 0;
}

3. Activity Selection
#include<iostream>
using namespace std;
void swap(int *a,int *b){
int temp=*a;
*a=*b;
*b=temp;
}
void swapS(string *a,string *b){
string temp=*a;
*a=*b;
*b=temp;
}
int main(){
cout<<"Enter the no. of activities : ";
int n,i;
cin>>n;
int st[n],ft[n],dt[n];
string act[n];
for(i=0;i<n;i++){
cout<<"\nEnter the activity no : "<<endl;
cin>>act[i];
cout<<"\nEnter the starting time of : "<<act[i]<<endl;
cin>>st[i];
cout<<"\nEnter the finishing time of : "<<act[i]<<endl;
cin>>ft[i];
dt[i]-ft[i]-st[i];
}
int j;
for(i=0;i<n;i++){
for(j=0;j<n-i;j++){
if(ft[j]>ft[j+1]){
swap(&ft[j],&ft[j+1]);
swap(&st[j],&st[j+1]);
swapS(&act[j],&act[j+1]);
swap(&dt[j],&dt[j+1]);
}
}
}
cout<<"\nSorted list according to the finishing time of activities is :
"<<endl;
cout<<"start time\tFinish time\tActivities"<<endl;
for(i=0;i<n;i++){
cout<<st[i]<<"\t\t"<<ft[i]<<"\t\t"<<act[i]<<endl;
}
cout<<"Hence the schedule is : "<<endl;
string sol[n];
int k=0;
sol[k]=act[0];
for(i=1;i<n;i++){
if(st[i]>=ft[k]){
k++;
sol[k]=act[i];
}
else continue;
}
for(i=0;i<k;i++) cout<<sol[i]<<"-->";
cout<<sol[k];
return 0;
}

4. Job Sequencing
#include<iostream>
using namespace std;

void swap(int *a,int *b){


int temp=*a;
*a=*b;
*b=temp;
}

void swapS(string *a,string *b){


string temp=*a;
*a=*b;
*b=temp;
}

int main(){
cout<<"Enter the no. of Job's : ";
int n,i,j;
cin>>n;
string jobs[n];
int deadline[n],profit[n];
for(i=0;i<n;i++){
cout<<"Enter the Job no. : ";
cin>>jobs[i];
cout<<"Enter the deadline and profit of job "<<jobs[i]<<" : ";
cin>>deadline[i]>>profit[i];
}
for(i=0;i<n-1;i++){
for(j=0;j<n-i-1;j++){
if(profit[j]<profit[j+1]){
swap(&profit[j],&profit[j+1]);
swap(&deadline[j],&deadline[j+1]);
swapS(&jobs[j],&jobs[j+1]);
}
}
}
cout<<"\n\n";
cout<<"Hence, the Sorting in descending order of their Profits is : \n";
cout<<"Jobs\t Deadline\tProfits\n";
for(i=0;i<n;i++) cout<<" "<<jobs[i]<<" \t"<<deadline[i]<<"\t
"<<profit[i]<<"\n";

int max=deadline[0];

for(i=1;i<n;i++){
if(max<deadline[i]) max=deadline[i];
}

string sol[max];

for(i=0;i<max;i++) sol[i]="-";

for(i=0;i<max;i++) cout<<sol[i]<<" ";

for(i=0;i<max;i++){
int j=deadline[i];
while(j>0){
if(sol[j-1]=="-"){
sol[j-1]=jobs[i];
break;
}
else j--;
}
}

cout<<"\n";

for(i=0;i<max;i++){
if(sol[i]=="-") cout<<i<<"-->Empty-->";
else cout<<i<<"-->"<<sol[i]<<"-->";
}

cout<<max;

return 0;
}

5. Coin Change using greedy.


#include<iostream>
using namespace std;
int main(){
cout<<"Enter the no. of types of coins : ";
int n,i,j;
cin>>n;
int coins[n];
cout<<"\nEnter those coins : ";
for(i=0;i<n;i++){
cin>>coins[i];
}
int amount;
cout<<"\nEnter the amount to be made : ";
cin>>amount;
for(i=0;i<n-1;i++){
for(j=0;j<n-i-1;j++){
if(coins[j]<coins[j+1]){
swap(coins[j],coins[j+1]);
}
}
}

cout<<"Hence the coins in descending order is sorted as : ";

for(i=0;i<n;i++){
cout<<" "<<coins[i];
}

int noc=0;
int sol[10];

j=0;
i=0;
while(amount!=0 && i<n){
if(amount<coins[i]){
i++;
continue;
}
else if(amount==coins[i]){
sol[j]=coins[i];
j++;
noc++;
break;
}
else{
int q=amount/coins[i];
amount-=q*coins[i];
while(q>0){
sol[j]=coins[i];
j++;
q--;
}
noc+=q;
}
i++;
}

cout<<"Hence the no. of coins will be : "<<j<<"\nAnd they are\n";


for(i=0;i<j;i++) cout<<sol[i]<<" ";
return 0;

6. Coin Change using Dynamic


#include<iostream>
#include<limits>

int min(int a,int b){


if(a<b) return a;
else return b;
}

using namespace std;


int main(){

cout<<"Enter the no. of types of coins : ";


int n,i,j;
cin>>n;
int coins[n+1];
cout<<"\nEnter those coins : ";

for(i=1;i<n+1;i++){
cin>>coins[i];
}

int amount;
cout<<"\nEnter the amount to be made : ";
cin>>amount;

float table[n+1][amount+1];

for(i=0;i<n+1;i++){
table[i][0]=0;
}

for(i=1;i<amount+1;i++){
table[0][i]=numeric_limits<float>::infinity();
}

for(i=1;i<n+1;i++){
for(j=1;j<amount+1;j++){
if(coins[i]>j){
table[i][j]=table[i-1][j];
}
else{
table[i][j]=min(table[i-1][j],1+table[i][j-coins[i]]);
}
}
}

for(i=0;i<n+1;i++){
for(j=0;j<amount+1;j++){
cout<<"\t"<<table[i][j];
}
cout<<"\n";
}

cout<<"Hence the minimum coin denomination is : "<<table[i-1][j-1];

return 0;
}

7. Floyd Warshall.
#include<iostream>
#include<vector>
#include "bits/stdc++.h"
using namespace std;
const int INF=1e9;
int32_t main(){
vector<vector<int>> graph={
{0,3,INF,7},
{8,0,2,INF},
{5,INF,0,1},
{2,INF,INF,0},
};

int n=graph.size();
vector<vector<int>> dist=graph;

int i,j,k;

for(k=0;k<n;k++){
for(i=0;i<n;i++){
for(j=0;j<n;j++){
if(dist[i][k]+dist[k][j]<dist[i][j])
dist[i][j]=dist[i][k]+dist[k][j];
}
}
}

for(i=0;i<n;i++){
for(j=0;j<n;j++){
if(dist[i][j]==INF) cout<<"INF"<<" ";
else cout<<dist[i][j]<<" ";
}
cout<<"\n";
}

return 0;
}

8. Longest Common Subsequence.


#include<iostream>
using namespace std;
int max(int a,int b){
if(a>b) return a;
else return b;
}

int main(){
string A="bdcaba";
string B="abcbdab";
int table[B.length()+1][A.length()+1];

int i,j;

for(i=0;i<B.length()+1;i++){
for(j=0;j<A.length()+1;j++){
if(i==0 || j==0) table[i][j]=0;
else{
if(A[j-1]==B[i-1]) table[i][j]=table[i-1][j-1]+1;
else{
table[i][j]=max(table[i-1][j],table[i][j-1]);
}
}
}
}

for(i=0;i<B.length()+1;i++){
for(j=0;j<A.length()+1;j++){
cout<<table[i][j]<<" ";
}
cout<<"\n";
}

return 0;
}

You might also like