Daa 1
Daa 1
Min Max:
#include<iostream>
using namespace std;
int a[100];
int max_val,min_val;
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;
}
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;
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++){
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;
}
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++;
}
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";
}
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;
}
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;
}