How to resolve the algorithm Balanced brackets step by step in the C programming language

Published on 7 June 2024 03:52 AM
#C

How to resolve the algorithm Balanced brackets step by step in the C programming language

Table of Contents

Problem Statement

Task:

Let's start with the solution:

Step by Step solution about How to resolve the algorithm Balanced brackets step by step in the C programming language

This C code generates sequences of brackets ([ and ]) of increasing lengths, shuffles them, and checks if each sequence is balanced, meaning if every opening bracket has a corresponding closing bracket. Here's how the code works step by step:

  • It includes necessary headers: <stdio.h>, <stdlib.h>, and <string.h>.

  • isBal function checks if a given sequence is balanced by iterating through the characters from right to left and keeping track of the balance. It returns 1 if balanced and 0 otherwise.

  • shuffle function implements the Fisher-Yates shuffle algorithm to shuffle the characters in place.

  • genSeq function generates a sequence of brackets with the specified length n. It fills an array with [ for the first n characters and with ] for the next n characters. Then, it shuffles the array to randomize the order of the brackets.

  • doSeq function generates a sequence for a given length n, checks if it's balanced, and prints the sequence along with the result.

  • main function repeatedly calls doSeq for n values from 0 to 8, generating and checking bracket sequences of increasing lengths.

  • The program prints the generated sequences and whether each is balanced (True) or not (False).

Source code in the c programming language

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

int isBal(const char*s,int l){
    signed c=0;
    while(l--)
	if(s[l]==']') ++c;
	else if(s[l]=='[') if(--c<0) break;
    return !c;
}

void shuffle(char*s,int h){
    int x,t,i=h;
    while(i--){
	t=s[x=rand()%h];
	s[x]=s[i];
	s[i]=t;
    }
}

void genSeq(char*s,int n){
    if(n){
	memset(s,'[',n);
	memset(s+n,']',n);
	shuffle(s,n*2);
    }
    s[n*2]=0;
}

void doSeq(int n){
    char s[64];
    const char *o="False";
    genSeq(s,n);
    if(isBal(s,n*2)) o="True";
    printf("'%s': %s\n",s,o);
}

int main(){
    int n=0;
    while(n<9) doSeq(n++);
    return 0;
}


'': True
'[]': True
']][[': False
'[][][]': True
'[]][[]][': False
'[]][[[[]]]': False
']]]][[[]][[[': False
']]]]]][][[[[[[': False
'[][]][[][[[]]][]': False


  

You may also check:How to resolve the algorithm Metronome step by step in the J programming language
You may also check:How to resolve the algorithm Loops/Wrong ranges step by step in the jq programming language
You may also check:How to resolve the algorithm Reverse words in a string step by step in the Tcl programming language
You may also check:How to resolve the algorithm 100 doors step by step in the Argile programming language
You may also check:How to resolve the algorithm XML/DOM serialization step by step in the ARM Assembly programming language