Advertisement
adityass

Untitled

Apr 29th, 2024
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.98 KB | None | 0 0
  1. // N queens
  2.  
  3. class Solution {
  4. public:
  5.  
  6.     bool isSafe(int row , int col ,vector<string> board , int n )
  7.     {
  8.         int checkr = row ;
  9.         int checkc = col ;
  10.         while( checkr >=0 && checkc>=0)
  11.         {
  12.             if(board[checkr][checkc]=='Q')
  13.             {
  14.                 return false ;
  15.             }
  16.             checkr --; checkc --;    
  17.         }
  18.         int tc = col ;
  19.         while(tc>=0)
  20.         {
  21.              if(board[row][tc]=='Q')
  22.             {
  23.                 return false ;
  24.             }
  25.             tc--;
  26.         }
  27.         checkr = row ;
  28.         checkc = col ;
  29.         while( checkr <n && checkc>=0)
  30.         {
  31.             if(board[checkr][checkc]=='Q')
  32.             {
  33.                 return false ;
  34.             }
  35.             checkr ++; checkc --;    
  36.         }
  37.         return true ;
  38.     }
  39.  
  40.     void solve(int col ,vector<string> &board ,   vector<vector<string>> &answer , int n )
  41.     {
  42.  
  43.         if (col == n )
  44.         {
  45.             answer.push_back(board) ;
  46.             return ;
  47.         }
  48.        for(int row =0 ; row<n ; row++)
  49.        {
  50.         if(isSafe(row , col , board , n))
  51.         {
  52.             board[row][col]= 'Q';
  53.             solve(col+1 , board , answer , n );
  54.             board[row][col]= '.';
  55.         }
  56.        }
  57.     }
  58.     vector<vector<string>> solveNQueens(int n) {
  59.         vector<vector<string>> answer ;
  60.         vector<string> board(n) ;
  61.         string s(n , '.') ;
  62.         for(int i = 0 ; i <n ;i++)
  63.         {
  64.             board[i] = s ;
  65.         }
  66.         solve(0, board , answer , n);
  67.         return answer;
  68.        
  69.     }
  70. };
  71.  
  72. // activity seq
  73.  
  74. class Solution {
  75. public:
  76.     static bool compare(vector<int> v1 , vector<int> v2 )
  77.     {
  78.         if (v1[1] == v2[1]) return v1[0]<v2[0];
  79.         return v1[1]<v2[1] ;
  80.     }
  81.     int eraseOverlapIntervals(vector<vector<int>>& intervals) {
  82.     sort(intervals.begin(), intervals.end(), compare);
  83.  
  84.     int i = 0 ;
  85.     int j = 1 ;
  86.     int c = 1 ;
  87.     int n = intervals.size();
  88.  
  89.     while(j<n)
  90.     {
  91.         if(intervals[i][1] <= intervals[j][0])
  92.         {
  93.             c++;
  94.             i = j ;
  95.             j++ ;
  96.         }
  97.         else
  98.         {
  99.             j++ ;
  100.         }
  101.     }
  102.  
  103.         return n - c ;
  104.     }
  105. };
  106.  
  107. // LCS
  108.  
  109. #include<vector>
  110. #include <bits/stdc++.h>
  111. using namespace std;
  112.  
  113. class Solution {
  114. public:
  115.  
  116.     int solve(string s1, string s2, int i, int j, vector<vector<int>>& vec) {
  117.         if (i == s1.length() || j == s2.length()) {
  118.             return 0;
  119.         }
  120.         if (vec[i][j] != -1) {
  121.             return vec[i][j];
  122.         }
  123.         int ans = 0;
  124.         if (s1[i] == s2[j]) {
  125.             ans = 1 + solve(s1, s2, i + 1, j + 1, vec);
  126.         }
  127.         else {
  128.             ans = max(solve(s1, s2, i + 1, j, vec), solve(s1, s2, i, j + 1, vec));
  129.         }
  130.         return vec[i][j] = ans;
  131.     }
  132.  
  133.     int longestCommonSubsequence(string text1, string text2) {
  134.         int rows = text1.length();
  135.         int cols = text2.length();
  136.         vector<vector<int>> vec(rows, vector<int>(cols, -1));
  137.  
  138.         return solve(text1, text2, 0, 0, vec);
  139.     }
  140. };
  141.  
  142. //eulers
  143.  
  144. #include <unordered_map>
  145. #include<queue>
  146. #include<list>
  147.  
  148.  
  149. bool iscyclicBFS(int src,    unordered_map<int,bool> &visited,   unordered_map<int,list<int>> adj){
  150.      unordered_map<int,int> parent;
  151.     parent[src]=-1;
  152.     visited[src]=1;
  153.     queue<int> q;
  154.     q.push(src);
  155.     while(!q.empty()){
  156.         int front = q.front();
  157.         q.pop();
  158.        
  159.         for(auto neighbour: adj[front]){
  160.             if(visited[neighbour]==true && neighbour!=parent[front]){
  161.                 return true;
  162.             }
  163.             else if(!visited[neighbour]){
  164.                 q.push(neighbour);
  165.                 visited[neighbour]=1;
  166.                 parent[neighbour]=front;
  167.             }
  168.         }
  169.     }
  170.     return false;
  171. }
  172.  
  173. bool iscyclicDFS(int node,int parent, unordered_map<int,bool> &visited, unordered_map<int,list<int>> &adj){
  174.     visited[node]=true;
  175.     for(auto neighbour: adj[node]){
  176.         if(!visited[neighbour]){
  177.             bool cycledetected=iscyclicDFS(neighbour, node,visited,adj);
  178.             if(cycledetected)
  179.                 return true;
  180.         }
  181.         else if(neighbour != parent){
  182.            //cycle present
  183.             return true;
  184.         }
  185.     }
  186.  return false;
  187. }
  188.  
  189. string cycleDetection (vector<vector<int>>& edges, int n, int m)
  190. {
  191.     // create adjacency list
  192.     unordered_map<int,list<int>> adj;
  193.     for(int i=0;i<m;i++){
  194.         int u = edges[i][0];
  195.         int v = edges[i][1];
  196.        
  197.         adj[u].push_back(v);
  198.         adj[v].push_back(u);
  199.     }
  200.     //to handle disconnected components
  201.         unordered_map<int,bool> visited;
  202.     for(int i=0;i<n;i++){
  203.         if(!visited[i]){
  204.             // bool ans = iscyclicBFS(i,visited,adj);
  205.             bool ans = iscyclicDFS(i,-1,visited,adj);
  206.             if(ans == 1){
  207.                 return "Yes";
  208.             }
  209.                
  210.         }
  211.     }
  212.     return "No";
  213. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement