Professional Documents
Culture Documents
#include <iostream>
#include <climits>
#include <vector>
using namespace std;
// Recursion+Memorization
// int min_coins(vector<int> x,int sum,vector<int> &dp){
// if(sum==0){
// return 0;
// }
// if(sum<0){
// return INT_MAX;
// }
// if(dp[sum]!=-1){
// return dp[sum];
// }
// int mini=INT_MAX;
// for(int i=0;i<x.size();i++){
// int ans=min_coins(x,sum-x[i],dp);
// if(ans!=INT_MAX){
// mini=min(mini,ans+1);
// }
// }
// dp[sum]=mini;
// return mini;
// }
// Tabulation:
int min_coins(vector<int> x,int sum,vector<int> &dp){
int mini=INT_MAX;
for(int i=1;i<=sum;i++){
for(int j=0;j<x.size();j++){
if(i-x[j]>=0 && dp[i-x[j]]!=INT_MAX){
dp[i]=min(dp[i],1+dp[i-x[j]]);
}
}
}
return dp[sum];
}
int main(){
vector<int> x={2,3};
int sum=7;
vector<int> dp(sum+1,INT_MAX);
dp[0]=0;
cout<<min_coins(x,sum,dp);
return 0;
}
Question 2: BFS Traversal in a Graph:
#include <iostream>
#include <vector>
#include <unordered_map>
#include <queue>
q.push(0);
m[0]=true;
while(!q.empty()){
temp=q.front();
ans.push_back(temp);
q.pop();
for(auto i:adj[temp]){
if(!m[i]){
q.push(i);
m[i]=true;
}
}
}
return ans;}
int main() {
int V, E;
cin >> V >> E;
vector<int> adj[V];
return 0;
}