codeparrot/xlcost-text-to-code huggingface dataset:
Find the sum of digits of a number at even and odd places | C # implementation of the approach ; Function to find the sum of the odd and even positioned digits in a number ; To store the respective sum ; Converting integer to String ; Traversing the String ; Driver code
using System ; class GFG { static void getSum ( int n ) { int sumOdd = 0 ; int sumEven = 0 ; String num = n . ToString ( ) ; for ( int i = 0 ; i < num . Length ; i ++ ) if ( i % 2 == 0 ) sumOdd = sumOdd + ( num [ i ] - '0' ) ; else sumEven = sumEven + ( num [ i ] - '0' ) ; Console . WriteLine ( " Sum ▁ odd ▁ = ▁ " + sumOdd ) ; Console . WriteLine ( " Sum ▁ even ▁ = ▁ " + sumEven ) ; } public static void Main ( ) { int n = 457892 ; getSum ( n ) ; } }
Iterative program to count leaf nodes in a Binary Tree | C # Program for above approach ; Node class ; Program to count leaves ; If the node itself is " null " return 0 , as there are no leaves ; It the node is a leaf then both right and left children will be " null " ; Now we count the leaves in the left and right subtrees and return the sum ; Driver Code ; Get leaf count of the above created tree
using System ; public class Node { public int data ; public Node left , right ; public Node ( int d ) { data = d ; left = right = null ; } } public class BinaryTree { public static Node root ; static int countLeaves ( Node node ) { if ( node == null ) { return 0 ; } if ( node . left == null && node . right == null ) { return 1 ; } return countLeaves ( node . left ) + countLeaves ( node . right ) ; } static public void Main ( ) { BinaryTree . root = new Node ( 1 ) ; BinaryTree . root . left = new Node ( 2 ) ; BinaryTree . root . right = new Node ( 3 ) ; BinaryTree . root . left . left = new Node ( 4 ) ; BinaryTree . root . left . right = new Node ( 5 ) ; Console . WriteLine ( countLeaves ( root ) ) ; } }
Partition an array such into maximum increasing segments | C # program to divide into maximum number of segments ; Returns the maximum number of sorted subarrays in a valid partition ; Find minimum value from right for every index ; Finding the shortest prefix such that all the elements in the prefix are less than or equal to the elements in the rest of the array . ; if current max is less than the right prefix min , we increase number of partitions . ; Driver code ; Find minimum value from right for every index
using System ; class GFG { static int sorted_partitions ( int [ ] arr ) { int n = arr . Length ; int [ ] right_min = new int [ n + 1 ] ; right_min [ n ] = int . MaxValue ; for ( int i = n - 1 ; i >= 0 ; i -- ) { right_min [ i ] = Math . Min ( right_min [ i + 1 ] , arr [ i ] ) ; } int partitions = 0 ; for ( int current_max = arr [ 0 ] , i = 0 ; i < n ; i ++ ) { current_max = Math . Max ( current_max , arr [ i ] ) ; if ( current_max <= right_min [ i + 1 ] ) partitions ++ ; } return partitions ; } public static void Main ( ) { int [ ] arr = { 3 , 1 , 2 , 4 , 100 , 7 , 9 } ; int ans = sorted_partitions ( arr ) ; Console . WriteLine ( ans ) ; } }
Minimize Cost with Replacement with other allowed | C # Program for the above approach ; This function returns the minimum cost of the array ; Driver code
using System ; using System . Linq ; class GfG { public static int getMinCost ( int [ ] arr , int n ) { int min_ele = arr . Min ( ) ; return min_ele * ( n - 1 ) ; } public static void Main ( String [ ] args ) { int [ ] arr = { 4 , 2 , 5 } ; int n = arr . Length ; Console . WriteLine ( getMinCost ( arr , n ) ) ; } }
Minimum swaps required to make a binary string alternating | C # implementation of the above approach ; function to count minimum swaps required to make binary String alternating ; Stores total number of ones ; Stores total number of zeroes ; Checking impossible condition ; Odd length String ; Number of even positions ; Stores number of zeroes and ones at even positions ; Even length String ; Stores number of ones at odd and even position respectively ; Driver code
using System ; class GFG { static int countMinSwaps ( string s ) { int N = s . Length ; int one = 0 ; int zero = 0 ; for ( int i = 0 ; i < N ; i ++ ) { if ( s [ i ] == '1' ) one ++ ; else zero ++ ; } if ( one > zero + 1 zero > one + 1 ) return - 1 ; if ( N % 2 == 1 ) { int num = ( N + 1 ) / 2 ; int one_even = 0 , zero_even = 0 ; for ( int i = 0 ; i < N ; i ++ ) { if ( i % 2 == 0 ) { if ( s [ i ] == '1' ) one_even ++ ; else zero_even ++ ; } } if ( one > zero ) return num - one_even ; else return num - zero_even ; } else { int one_odd = 0 , one_even = 0 ; for ( int i = 0 ; i < N ; i ++ ) { if ( s [ i ] == '1' ) { if ( i % 2 == 1 ) one_odd ++ ; else one_even ++ ; } } return Math . Min ( N / 2 - one_odd , N / 2 - one_even ) ; } } public static void Main ( String [ ] args ) { string s = "111000" ; Console . Write ( countMinSwaps ( s ) ) ; } }
Check if it is possible to return to the starting position after moving in the given directions | C # implementation of above approach ; Main Method ; int n = 0 ; Count of North int s = 0 ; Count of South int e = 0 ; Count of East int w = 0 ; Count of West
using System ; class GFG { public static void Main ( ) { string st = " NNNWEWESSS " ; int len = st . Length ; for ( int i = 0 ; i < len ; i ++ ) { if ( st [ i ] == ' N ' ) n += 1 ; if ( st [ i ] == ' S ' ) s += 1 ; if ( st [ i ] == ' W ' ) w += 1 ; if ( st [ i ] == ' E ' ) e += 1 ; } if ( n == s && w == e ) Console . WriteLine ( " YES " ) ; else Console . WriteLine ( " NO " ) ; } }
Minimum cost to make array size 1 by removing larger of pairs | C # program to find minimum cost to reduce array size to 1 , ; function to calculate the minimum cost ; Minimum cost is n - 1 multiplied with minimum element . ; Driver code .
using System ; using System . Linq ; public class GFG { static int cost ( int [ ] a , int n ) { return ( n - 1 ) * a . Min ( ) ; } static public void Main ( ) { int [ ] a = { 4 , 3 , 2 } ; int n = a . Length ; Console . WriteLine ( cost ( a , n ) ) ; } }
Count Non | C # program to count total number of non - leaf nodes in a binary tree ; A binary tree node has data , pointer to left child and a pointer to right child ; Helper function that allocates a new node with the given data and NULL left and right pointers . ; Computes the number of non - leaf nodes in a tree . ; Base cases . ; If root is Not NULL and its one of its child is also not NULL ; Driver code
using System ; class GfG { class Node { public int data ; public Node left ; public Node right ; } static Node newNode ( int data ) { Node node = new Node ( ) ; node . data = data ; node . left = null ; node . right = null ; return ( node ) ; } static int countNonleaf ( Node root ) { if ( root == null || ( root . left == null && root . right == null ) ) return 0 ; return 1 + countNonleaf ( root . left ) + countNonleaf ( root . right ) ; } public static void Main ( String [ ] args ) { Node root = newNode ( 1 ) ; root . left = newNode ( 2 ) ; root . right = newNode ( 3 ) ; root . left . left = newNode ( 4 ) ; root . left . right = newNode ( 5 ) ; Console . WriteLine ( countNonleaf ( root ) ) ; } }
Minimum cost for acquiring all coins with k extra coins allowed with every coin | C # program to acquire all n coins ; function to calculate min cost ; sort the coins value ; calculate no . of coins needed ; calculate sum of all selected coins ; Driver code
using System ; class GFG { static int minCost ( int [ ] coin , int n , int k ) { Array . Sort ( coin ) ; int coins_needed = ( int ) Math . Ceiling ( 1.0 * n / ( k + 1 ) ) ; int ans = 0 ; for ( int i = 0 ; i <= coins_needed - 1 ; i ++ ) ans += coin [ i ] ; return ans ; } public static void Main ( ) { int [ ] coin = { 8 , 5 , 3 , 10 , 2 , 1 , 15 , 25 } ; int n = coin . Length ; int k = 3 ; Console . Write ( minCost ( coin , n , k ) ) ; } }
Program for First Fit algorithm in Memory Management | C # implementation of First - Fit algorithm ; Method to allocate memory to blocks as per First fit algorithm ; Stores block id of the block allocated to a process ; Initially no block is assigned to any process ; pick each process and find suitable blocks according to its size ad assign to it ; allocate block j to p [ i ] process ; Reduce available memory in this block . ; Driver Code
using System ; class GFG { static void firstFit ( int [ ] blockSize , int m , int [ ] processSize , int n ) { int [ ] allocation = new int [ n ] ; for ( int i = 0 ; i < allocation . Length ; i ++ ) allocation [ i ] = - 1 ; for ( int i = 0 ; i < n ; i ++ ) { for ( int j = 0 ; j < m ; j ++ ) { if ( blockSize [ j ] >= processSize [ i ] ) { allocation [ i ] = j ; blockSize [ j ] -= processSize [ i ] ; break ; } } } Console . WriteLine ( " STRNEWLINE Process ▁ No . TABSYMBOL Process ▁ Size TABSYMBOL Block ▁ no . " ) ; for ( int i = 0 ; i < n ; i ++ ) { Console . Write ( " ▁ " + ( i + 1 ) + " TABSYMBOL TABSYMBOL " + processSize [ i ] + " TABSYMBOL TABSYMBOL " ) ; if ( allocation [ i ] != - 1 ) Console . Write ( allocation [ i ] + 1 ) ; else Console . Write ( " Not ▁ Allocated " ) ; Console . WriteLine ( ) ; } } public static void Main ( ) { int [ ] blockSize = { 100 , 500 , 200 , 300 , 600 } ; int [ ] processSize = { 212 , 417 , 112 , 426 } ; int m = blockSize . Length ; int n = processSize . Length ; firstFit ( blockSize , m , processSize , n ) ; } }
Greedy Algorithm to find Minimum number of Coins | C # program to find minimum number of denominations ; All denominations of Indian Currency ; Initialize result ; Traverse through all denomination ; Find denominations ; Print result ; Driver code
using System ; using System . Collections . Generic ; class GFG { static int [ ] deno = { 1 , 2 , 5 , 10 , 20 , 50 , 100 , 500 , 1000 } ; static int n = deno . Length ; static void findMin ( int V ) { List < int > ans = new List < int > ( ) ; for ( int i = n - 1 ; i >= 0 ; i -- ) { while ( V >= deno [ i ] ) { V -= deno [ i ] ; ans . Add ( deno [ i ] ) ; } } for ( int i = 0 ; i < ans . Count ; i ++ ) { Console . Write ( " ▁ " + ans [ i ] ) ; } } public static void Main ( String [ ] args ) { int n = 93 ; Console . Write ( " Following ▁ is ▁ minimal ▁ number ▁ " + " of ▁ change ▁ for ▁ " + n + " : ▁ " ) ; findMin ( n ) ; } }
Minimize count of array elements to be removed such that at least K elements are equal to their index values | C # code for the above approach ; Function to minimize the removals of array elements such that atleast K elements are equal to their indices ; Store the array as 1 - based indexing Copy of first array ; Make a dp - table of ( N * N ) size ; Delete the current element ; Take the current element ; Check for the minimum removals ; Code
using System ; public class GFG { static int MinimumRemovals ( int [ ] a , int N , int K ) { int [ ] b = new int [ N + 1 ] ; for ( int i = 0 ; i < N ; i ++ ) { b [ i + 1 ] = a [ i ] ; } int [ , ] dp = new int [ N + 1 , N + 1 ] ; for ( int i = 0 ; i < N ; i ++ ) { for ( int j = 0 ; j <= i ; j ++ ) { dp [ i + 1 , j ] = Math . Max ( dp [ i + 1 , j ] , dp [ i , j ] ) ; dp [ i + 1 , j + 1 ] = Math . Max ( dp [ i + 1 , j + 1 ] , dp [ i , j ] + ( ( b [ i + 1 ] == j + 1 ) ? 1 : 0 ) ) ; } } for ( int j = N ; j >= 0 ; j -- ) { if ( dp [ N , j ] >= K ) { return ( N - j ) ; } } return - 1 ; } static public void Main ( ) { int [ ] arr = { 5 , 1 , 3 , 2 , 3 } ; int K = 2 ; int N = arr . Length ; Console . Write ( MinimumRemovals ( arr , N , K ) ) ; } }
Count of Arrays of size N having absolute difference between adjacent elements at most 1 | C # program of the above approach ; Function to find the count of possible arrays such that the absolute difference between any adjacent elements is atmost 1 ; Stores the dp states where dp [ i ] [ j ] represents count of arrays of length i + 1 having their last element as j ; Case where 1 st array element is missing ; All integers in range [ 1 , M ] are reachable ; Only reachable integer is arr [ 0 ] ; Iterate through all values of i ; If arr [ i ] is not missing ; Only valid value of j is arr [ i ] ; If arr [ i ] is missing ; Iterate through all possible values of j in range [ 1 , M ] ; Stores the count of valid arrays ; Calculate the total count of valid arrays ; Return answer ; Driver Code ; Function Call
using System ; public class GFG { public static int countArray ( int [ ] arr , int N , int M ) { int [ , ] dp = new int [ N , M + 2 ] ; for ( int i = 0 ; i < N ; i ++ ) { for ( int j = 0 ; j < M + 2 ; j ++ ) { dp [ i , j ] = 0 ; } } if ( arr [ 0 ] == - 1 ) { for ( int j = 1 ; j <= M ; j ++ ) { dp [ 0 , j ] = 1 ; } } else { dp [ 0 , arr [ 0 ] ] = 1 ; } for ( int i = 1 ; i < N ; i ++ ) { if ( arr [ i ] != - 1 ) { int j = arr [ i ] ; dp [ i , j ] += dp [ i - 1 , j - 1 ] + dp [ i - 1 , j ] + dp [ i - 1 , j + 1 ] ; } if ( arr [ i ] == - 1 ) { for ( int j = 1 ; j <= M ; j ++ ) { dp [ i , j ] += dp [ i - 1 , j - 1 ] + dp [ i - 1 , j ] + dp [ i - 1 , j + 1 ] ; } } } int arrCount = 0 ; for ( int j = 1 ; j <= M ; j ++ ) { arrCount += dp [ N - 1 , j ] ; } return arrCount ; } public static void Main ( String [ ] args ) { int [ ] arr = { 4 , - 1 , 2 , 1 , - 1 , - 1 } ; int N = arr . Length ; int M = 10 ; Console . WriteLine ( countArray ( arr , N , M ) ) ; } }
Maximize sum of product of neighbouring elements of the element removed from Array | C # program for the above approach ; Stores the dp state where dp [ i ] [ j ] represents the maximum possible score in the subarray from index i to j ; Iterate through all possible lengths of the subarray ; Iterate through all the possible starting indices i having length len ; Stores the rightmost index of the current subarray ; Initial dp [ i ] [ j ] will be 0. ; Iterate through all possible values of k in range [ i + 1 , j - 1 ] ; Return the answer ; Driver Code ; Function Call ; Function Call
using System ; public class GFG { static int maxMergingScore ( int [ ] A , int N ) { int [ , ] dp = new int [ 101 , 101 ] ; for ( int i = 0 ; i < 101 ; i ++ ) { { for ( int j = 0 ; j < 101 ; j ++ ) dp [ i , j ] = 0 ; } } for ( int len = 1 ; len < N ; ++ len ) { for ( int i = 0 ; i + len < N ; ++ i ) { int j = i + len ; dp [ i , j ] = 0 ; for ( int k = i + 1 ; k < j ; ++ k ) { dp [ i , j ] = Math . Max ( dp [ i , j ] , dp [ i , k ] + dp [ k , j ] + A [ i ] * A [ j ] ) ; } } } return dp [ 0 , N - 1 ] ; } static public void Main ( ) { int N = 4 ; int [ ] A = { 1 , 2 , 3 , 4 } ; Console . WriteLine ( maxMergingScore ( A , N ) ) ; N = 2 ; int [ ] B = { 1 , 55 } ; Console . WriteLine ( maxMergingScore ( B , N ) ) ; } }
Longest subarray with all even or all odd elements | C # implementation for the above approach ; Function to calculate longest subString with odd or even elements ; Initializing dp ; Initializing dp with 1 ; ans will store the readonly answer ; Traversing the array from index 1 to N - 1 ; Checking both current and previous element is even or odd ; Updating dp with ( previous dp value ) + 1 ; Storing max element so far to ans ; Returning the readonly answer ; Driver code ; Input ; Function call
using System ; public class GFG { static int longestOddEvenSubarray ( int [ ] A , int N ) { int dp ; dp = 1 ; int ans = 1 ; for ( int i = 1 ; i < N ; i ++ ) { if ( ( A [ i ] % 2 == 0 && A [ i - 1 ] % 2 == 0 ) || ( A [ i ] % 2 != 0 && A [ i - 1 ] % 2 != 0 ) ) { dp = dp + 1 ; ans = Math . Max ( ans , dp ) ; } else dp = 1 ; } return ans ; } public static void Main ( String [ ] args ) { int [ ] A = { 2 , 5 , 7 , 2 , 4 , 6 , 8 , 3 } ; int N = A . Length ; Console . Write ( longestOddEvenSubarray ( A , N ) ) ; } }
Count of N | C # program for the above approach ; Function to find number of ' N ' digit numbers such that the element is mean of sum of its adjacent digits ; If digit = n + 1 , a valid n - digit number has been formed ; If the state has already been computed ; If current position is 1 , then any digit from [ 1 - 9 ] can be placed . If n = 1 , 0 can be also placed . ; If current position is 2 , then any digit from [ 1 - 9 ] can be placed . ; previous digit selected is the mean . ; mean = ( current + prev2 ) / 2 current = ( 2 * mean ) - prev2 ; Check if current and current + 1 can be valid placements ; return answer ; Driver Code ; Initializing dp array with - 1. ; Given Input ; Function call
using System ; class GFG { static int [ , , ] dp = new int [ 100 , 10 , 10 ] ; static int countOfNumbers ( int digit , int prev1 , int prev2 , int n ) { if ( digit == n + 1 ) { return 1 ; } int val = dp [ digit , prev1 , prev2 ] ; if ( val != - 1 ) { return val ; } val = 0 ; if ( digit == 1 ) { for ( int i = ( n == 1 ? 0 : 1 ) ; i <= 9 ; ++ i ) { val += countOfNumbers ( digit + 1 , i , prev1 , n ) ; } } else if ( digit == 2 ) { for ( int i = 0 ; i <= 9 ; ++ i ) { val += countOfNumbers ( digit + 1 , i , prev1 , n ) ; } } else { int mean = prev1 ; int current = ( 2 * mean ) - prev2 ; if ( current >= 0 && current <= 9 ) val += countOfNumbers ( digit + 1 , current , prev1 , n ) ; if ( ( current + 1 ) >= 0 && ( current + 1 ) <= 9 ) val += countOfNumbers ( digit + 1 , current + 1 , prev1 , n ) ; } return val ; } static public void Main ( ) { for ( int i = 0 ; i < 100 ; i ++ ) { for ( int j = 0 ; j < 10 ; j ++ ) { for ( int k = 0 ; k < 10 ; k ++ ) { dp [ i , j , k ] = - 1 ; } } } int n = 2 ; Console . Write ( countOfNumbers ( 1 , 0 , 0 , n ) ) ; } }
Count half nodes in a Binary tree ( Iterative and Recursive ) | C # program to count half nodes in a Binary Tree using Iterative approach ; Class to represent Tree node ; Class to count half nodes of Tree ; Function to get the count of half Nodes in a binary tree ; If tree is empty ; Do level order traversal starting from root ; Initialize count of half nodes ; Enqueue left child ; Enqueue right child ; Driver Program to test above function
using System ; using System . Collections . Generic ; public class Node { public int data ; public Node left , right ; public Node ( int item ) { data = item ; left = null ; right = null ; } } public class BinaryTree { Node root ; int gethalfCount ( ) { if ( root == null ) return 0 ; Queue < Node > queue = new Queue < Node > ( ) ; queue . Enqueue ( root ) ; int count = 0 ; while ( queue . Count != 0 ) { Node temp = queue . Dequeue ( ) ; if ( temp . left != null && temp . right == null temp . left == null && temp . right != null ) count ++ ; if ( temp . left != null ) queue . Enqueue ( temp . left ) ; if ( temp . right != null ) queue . Enqueue ( temp . right ) ; } return count ; } public static void Main ( ) { BinaryTree tree_level = new BinaryTree ( ) ; tree_level . root = new Node ( 2 ) ; tree_level . root . left = new Node ( 7 ) ; tree_level . root . right = new Node ( 5 ) ; tree_level . root . left . right = new Node ( 6 ) ; tree_level . root . left . right . left = new Node ( 1 ) ; tree_level . root . left . right . right = new Node ( 11 ) ; tree_level . root . right . right = new Node ( 9 ) ; tree_level . root . right . right . left = new Node ( 4 ) ; Console . WriteLine ( tree_level . gethalfCount ( ) ) ; } }
Count N | C # program for the above approach ; Function to count N digit numbers whose digits are less than or equal to the absolute difference of previous two digits ; If all digits are traversed ; If the state has already been computed ; If the current digit is 1 , any digit from [ 1 - 9 ] can be placed . If N == 1 , 0 can also be placed . ; If the current digit is 2 , any digit from [ 0 - 9 ] can be placed ; For other digits , any digit from 0 to abs ( prev1 - prev2 ) can be placed ; Return the answer ; Driver code ; Input ; Function call
using System ; using System . Collections . Generic ; class GFG { static int [ , , ] dp = new int [ 50 , 10 , 10 ] ; static void initialize ( ) { for ( int i = 0 ; i < 50 ; i ++ ) { for ( int j = 0 ; j < 10 ; j ++ ) { for ( int k = 0 ; k < 10 ; k ++ ) { dp [ i , j , k ] = - 1 ; } } } } static int countOfNumbers ( int digit , int prev1 , int prev2 , int N ) { if ( digit == N + 1 ) return 1 ; if ( dp [ digit , prev1 , prev2 ] != - 1 ) return dp [ digit , prev1 , prev2 ] ; dp [ digit , prev1 , prev2 ] = 0 ; if ( digit == 1 ) { for ( int j = ( N == 1 ? 0 : 1 ) ; j <= 9 ; ++ j ) { dp [ digit , prev1 , prev2 ] += countOfNumbers ( digit + 1 , j , prev1 , N ) ; } } else if ( digit == 2 ) { for ( int j = 0 ; j <= 9 ; ++ j ) { dp [ digit , prev1 , prev2 ] += countOfNumbers ( digit + 1 , j , prev1 , N ) ; } } else { for ( int j = 0 ; j <= Math . Abs ( prev1 - prev2 ) ; ++ j ) { dp [ digit , prev1 , prev2 ] += countOfNumbers ( digit + 1 , j , prev1 , N ) ; } } return dp [ digit , prev1 , prev2 ] ; } public static void Main ( ) { initialize ( ) ; int N = 3 ; Console . Write ( countOfNumbers ( 1 , 0 , 0 , N ) ) ; } }
Length of longest subset consisting of A 0 s and B 1 s from an array of strings |  ; Function to count number of 0 s present in the string ; Stores the count of 0 s ; Iterate over characters of string ; If current character is '0' ; Recursive Function to find the length of longest subset from given array of strings with at most A 0 s and B 1 s ; If idx is equal to N or A + B is equal to 0 ; If the state is already calculated ; Stores the count of 0 's ; Stores the count of 1 's ; Stores the length of longest by including arr [ idx ] ; If zero is less than A and one is less than B ; Stores the length of longest subset by excluding arr [ idx ] ; Assign ; Return ; Function to find the length of the longest subset of an array of strings with at most A 0 s and B 1 s ; Stores all Dp - states ; Return ; Driver Code
using System ; public class GFG { static int count0 ( string s ) { int count = 0 ; for ( int i = 0 ; i < s . Length ; i ++ ) { if ( s [ i ] == '0' ) { count ++ ; } } return count ; } static int solve ( string [ ] vec , int A , int B , int idx , int [ , , ] dp ) { if ( idx == vec . Length A + B == 0 ) { return 0 ; } if ( dp [ A , B , idx ] > 0 ) { return dp [ A , B , idx ] ; } int zero = count0 ( vec [ idx ] ) ; int one = vec [ idx ] . Length - zero ; int inc = 0 ; if ( zero <= A && one <= B ) { inc = 1 + solve ( vec , A - zero , B - one , idx + 1 , dp ) ; } int exc = solve ( vec , A , B , idx + 1 , dp ) ; dp [ A , B , idx ] = Math . Max ( inc , exc ) ; return dp [ A , B , idx ] ; } static int MaxSubsetlength ( string [ ] arr , int A , int B ) { int [ , , ] dp = new int [ A + 1 , B + 1 , arr . Length + 1 ] ; return solve ( arr , A , B , 0 , dp ) ; } static public void Main ( ) { string [ ] arr = { "1" , "0" , "10" } ; int A = 1 , B = 1 ; Console . WriteLine ( MaxSubsetlength ( arr , A , B ) ) ; } }
Check if a given pattern exists in a given string or not | C # program for the above approach ; Function to check if the pattern consisting of ' * ' , ' . ' and lowercase characters matches the text or not ; Base Case ; Stores length of text ; Stores length of pattern ; dp [ i ] [ j ] : Check if { text [ 0 ] , . . text [ i ] } matches { pattern [ 0 ] , ... pattern [ j ] } or not ; Base Case ; Iterate over the characters of the string pattern ; Update dp [ 0 ] [ i + 1 ] ; Iterate over the characters of both the strings ; If current character in the pattern is ' . ' ; Update dp [ i + 1 ] [ j + 1 ] ; If current character in both the strings are equal ; Update dp [ i + 1 ] [ j + 1 ] ; If current character in the pattern is ' * ' ; Update dp [ i + 1 ] [ j + 1 ] ; Update dp [ i + 1 ] [ j + 1 ] ; Return dp [ M ] [ N ] ; Driver Code
using System ; class GFG { static bool isMatch ( string text , string pattern ) { if ( text == null pattern == null ) { return false ; } int N = text . Length ; int M = pattern . Length ; bool [ , ] dp = new bool [ N + 1 , M + 1 ] ; dp [ 0 , 0 ] = true ; for ( int i = 0 ; i < M ; i ++ ) { if ( pattern [ i ] == ' * ' && dp [ 0 , i - 1 ] ) { dp [ 0 , i + 1 ] = true ; } } for ( int i = 0 ; i < N ; i ++ ) { for ( int j = 0 ; j < M ; j ++ ) { if ( pattern [ j ] == ' . ' ) { dp [ i + 1 , j + 1 ] = dp [ i , j ] ; } if ( pattern [ j ] == text [ i ] ) { dp [ i + 1 , j + 1 ] = dp [ i , j ] ; } if ( pattern [ j ] == ' * ' ) { if ( pattern [ j - 1 ] != text [ i ] && pattern [ j - 1 ] != ' . ' ) { dp [ i + 1 , j + 1 ] = dp [ i + 1 , j - 1 ] ; } else { dp [ i + 1 , j + 1 ] = ( dp [ i + 1 , j ] dp [ i , j + 1 ] dp [ i + 1 , j - 1 ] ) ; } } } } return dp [ N , M ] ; } public static void Main ( ) { string text = " geeksforgeeks " ; string pattern = " ge * ksforgeeks " ; if ( isMatch ( text , pattern ) ) { Console . WriteLine ( " Yes " ) ; } else { Console . WriteLine ( " No " ) ; } } }