The N Queens Problem using Backtracking/Recursion - Explained

แชร์
ฝัง
  • เผยแพร่เมื่อ 12 ธ.ค. 2018
  • Code - backtobackswe.com/platform/co...
    Free 5-Day Mini-Course: backtobackswe.com
    Try Our Full Platform: backtobackswe.com/pricing
    📹 Intuitive Video Explanations
    🏃 Run Code As You Learn
    💾 Save Progress
    ❓New Unseen Questions
    🔎 Get All Solutions
    Question: Write a program which returns all distinct nonattacking placements of n queens on an nxn chessboard, where n is an input to the program.
    A nonattacking placement of queens is one in which no two queens are in the same row, column, or diagonal.
    We will use backtracking to solve this problem.
    This can be one of the most confusing topics that you have to learn, expecially if you have shaky foundations in thinking recursively and calculating harder complexities.
    Other Well Know Backtracking Problems:
    -) Generate The Powerset of An Array (Subsets)
    -) Generate All Permutations of A String
    Backtracking/Recursion is about following a path to a base case...our target...our answer. If a certain path ends up not meeting our constraints we will backtrack to an earlier state and try something else from there.
    The 3 Keys To Backtracking Problems:
    Our Choice
    -) What choice are we making at each call of the function
    -) RECURSION REPRESENTS A DECISION.
    -) RECURSION REPRESENTS A CHOICE & its associated state
    -) Each function call represents a state. From that state decisions can be made.
    Our Constraints
    -) What tells us to stop following a certain path that we are searching on?
    -) Have we exhausted all possibilities?
    Our Goal
    -) What is our target?
    -) What are we trying to find?
    -) These will craft our base cases.
    Example: You lost your keys. Where do you go? The most recent place you were. Then the most recent place from there. And so on. Then you go to somewhere else...eventually you find your keys or give up the search.
    So for this problem:
    Our Choice - Where to place a queen
    Our Constraints - The placement must non-attacking
    Our Goal - Place n-queens on the chess board
    Time and Space Complexities:
    Complexity for this problem is tricky.
    The time complexity is lower bounded by the number of non-attacking placements because we will be making at least the amount of function calls that it takes to find those placements (meaning we don't even include work done in each call).
    No exact form is known for this lower bound as a function of n, but it is conjectured to tend towards n! / (c ^ n) (where c ≈ 2.54) which is super-exponential.
    Super exponential growth forms a "J-curve" that grows much faster than exponential functions.
    RECURSION REPRESENTS A DECISION.
    RECURSION REPRESENTS A DECISION.
    RECURSION REPRESENTS A DECISION.
    Whether this is a tree or a linked list, etc. When thinking recursively, our function sets forth rules that allows the function to make decisions based on state passed into it
    All backtracking is about is that we can return to previous decision points and explore another path that hasn't been taken yet to see if it yields an answer.
    ++++++++++++++++++++++++++++++++++++++++++++++++++
    HackerRank: / @hackerrankofficial
    Tuschar Roy: / tusharroy2525
    GeeksForGeeks: / @geeksforgeeksvideos
    Jarvis Johnson: / vsympathyv
    Success In Tech: / @successintech
    ++++++++++++++++++++++++++++++++++++++++++++++++++
    This question is question 16.2 in Elements of Programming Interviews (EPI).
  • วิทยาศาสตร์และเทคโนโลยี

ความคิดเห็น • 324

  • @BackToBackSWE
    @BackToBackSWE  5 ปีที่แล้ว +41

    Table of Contents: (and more info)
    Video Setup 0:00 - 0:33
    Introducing The N Queens Problem 0:33 - 1:05
    What Is Backtracking? 1:05 - 2:15
    Further Describing The Problem 2:15 - 3:21
    The 3 Keys To Backtracking Problems 3:21 - 5:31
    The Code 5:31 - 13:11
    Wrap Up 13:11 - 14:09
    The N Queens Problem Made Simple. Forgot to explain time complexities, that is in the description. Also, I wish I could've drawn a full diagram of the backtracking but ran out of room on the board. I may make a separate video for that since VISUALS are very key for understanding how these backtracking algorithms work.

  • @alihaghighipour7371
    @alihaghighipour7371 4 ปีที่แล้ว +148

    you're by far the most enthusiastic person that i've ever seen in this field dude . keep it up !

    • @BackToBackSWE
      @BackToBackSWE  4 ปีที่แล้ว +16

      I was mad lol, because online explanations sucked

    • @qwarlockz8017
      @qwarlockz8017 3 ปีที่แล้ว

      @@BackToBackSWE Also, your code for this is the cleanest and clearest that I have seen. I have searched through github and no one has better code for this excersize.

  • @naydernn4725
    @naydernn4725 2 ปีที่แล้ว +12

    I can tell this explanation is coming from someone who struggled a long time with the concept, because your explanation is so thorough yet accommodating that it is hard not to kind of get it as I follow along.. Thank you so much!

    • @BackToBackSWE
      @BackToBackSWE  2 ปีที่แล้ว +1

      Thank you, glad you liked it 😀
      Do check out backtobackswe.com/platform/content
      and please recommend us to your family and friends 😀

  • @BarnezGFX
    @BarnezGFX 5 ปีที่แล้ว +108

    This is a brilliant example, and it's evident you care about what you are teaching - which is greatly appreciated and reflected in the quality of the video. Thanks a lot, it helped me get a little bit closer to understanding.

    • @BackToBackSWE
      @BackToBackSWE  5 ปีที่แล้ว +13

      Great. That means a lot. My goal is to make this the premier channel (#1 on TH-cam) for programming interview prep. Teaching is hard and I'm slowly getting better at it.
      If you are still not 100% give it a few months and come back. Concepts that are new like this take time to sink in, but once they are internalized they stay for a long time in understanding.

  • @YashSharma-uw8dn
    @YashSharma-uw8dn 4 ปีที่แล้ว +37

    I really like the informalness that you bring while making videos on dense topics, trust me that really helps the viewers 😁

  • @jiadar
    @jiadar 3 ปีที่แล้ว +8

    I've never seen someone so excited about algorithms. Great content. Well done!

  • @finncummins6230
    @finncummins6230 5 ปีที่แล้ว +6

    Hey man, I love the great quality of these videos and the depth to which you explain each topic. I am currently studying for a competitive programming competition and I'm finding your videos to be a great study aid. Keep up the good work!

    • @BackToBackSWE
      @BackToBackSWE  5 ปีที่แล้ว +2

      Nice! Keep it up, you are a beast!

  • @NithinMWarrier
    @NithinMWarrier 2 ปีที่แล้ว +1

    I really love the way you explain, your commitment to understand is amazing, a big thumbs up man!!

  • @danielg012
    @danielg012 5 ปีที่แล้ว +7

    These videos have been super helpful for me during my interview prep. Thank you so much!

    • @BackToBackSWE
      @BackToBackSWE  5 ปีที่แล้ว +7

      It is nothing. If you ever have any questions just comment on a video and I can answer them (I check these daily).
      I am literally here for you. Although we may not know each other I know exactly what you are going through.
      This is why the channel exists and why I do this.

  • @ericlugo-dev
    @ericlugo-dev 3 ปีที่แล้ว +2

    Absolutely love the way this was explained. I've been ramming my head at the wall that is understanding recursion for a bit without much progress, yet this explanation completely changed the way I treat it!!!

  • @prashant211087
    @prashant211087 4 ปีที่แล้ว +64

    When you reach the end of this playlist... Backtrack :)

  • @gmstabloid
    @gmstabloid 4 ปีที่แล้ว +2

    You should be proud man! Awesome explanation and passion for the code! Thanks!

  • @jayliang5737
    @jayliang5737 4 ปีที่แล้ว +2

    You get the clearest explanation for backtracking I can find on youtube!

  • @lilaiyang5745
    @lilaiyang5745 2 ปีที่แล้ว +1

    Please keep doing more problems, only your video makes me understand N-Queens Problems. Appreciate it!

    • @BackToBackSWE
      @BackToBackSWE  2 ปีที่แล้ว

      Amaze! Stay tuned for our upcoming interview prep module with new mentors!

  • @eggsaladstuckcrafts4653
    @eggsaladstuckcrafts4653 4 ปีที่แล้ว +2

    Thank you so much for making this video. I was so confused about where to even start with my backtracking project for class but this helped me so much!

  • @xinyuyou7512
    @xinyuyou7512 5 ปีที่แล้ว +2

    I really feel your enthusiastic when you're making this video. This helps me continue Learning the video. Thank you so much.

  • @ameerkaras4580
    @ameerkaras4580 3 ปีที่แล้ว +1

    These have got to be the only genuinely entertaining coding vids on the internet, love it

  • @vinithapalani3385
    @vinithapalani3385 4 ปีที่แล้ว +2

    Have watched half a dozen of videos on this ...but only after watching this can I confidently say that I "get it" ..Thanks you so much, you are awesome!!

  • @takharamazanpolat7610
    @takharamazanpolat7610 4 ปีที่แล้ว +3

    I'm watching this channel's video first time but I can say that this man has a passion for what he does, it can be seen in the first couple of minutes.

  • @manasasusirla6451
    @manasasusirla6451 3 ปีที่แล้ว +2

    I bet there's no one who can explain backtracking problem better than you did. Your video helped me a lot. Thanks!

  • @rajrajeshwarsinghrathore
    @rajrajeshwarsinghrathore ปีที่แล้ว

    Thanks a lot. This was my first LeetCode HARD problem. Gave a much-needed confidence.

  • @user-ku2kq9hb5u
    @user-ku2kq9hb5u ปีที่แล้ว

    this is supper clear, thank you for making these videos

  • @Ayushkumar-xj9vl
    @Ayushkumar-xj9vl 4 ปีที่แล้ว +7

    Thanks for this briliant insight to recursion, you explain like a big bro.😃

  • @karankanchetty105
    @karankanchetty105 4 ปีที่แล้ว +3

    Wow. You just boiled a hard problem down to 3 simple steps that we can always rely on. Thanks for the video and an awesome explanation.

  • @marisawong644
    @marisawong644 8 หลายเดือนก่อน

    i love this man - he explains everything so well!

  • @sarthakbhatia7888
    @sarthakbhatia7888 3 ปีที่แล้ว +3

    Thanks mann....Your explaination is really one of the best out there!!

  • @sanjivmadhavan5705
    @sanjivmadhavan5705 4 ปีที่แล้ว +2

    AWW THIS VIDEO WAS POSTED ON MY BIRTHDAY. THANKS FOR THE GIFT MY MAN

  • @AdtecBarema
    @AdtecBarema 5 หลายเดือนก่อน

    This is Just Superb, thank you so much Biny for all effort & kindness, in demistyfying this involved problem.

  • @nico-bf8ql
    @nico-bf8ql ปีที่แล้ว

    thank u so much. i love how causal and inviting you are

    • @BackToBackSWE
      @BackToBackSWE  ปีที่แล้ว

      Glad it was helpful! 😄 Also check out our FREE DSA Interview Prep Mini-Course - backtobackswe.com/ 🎉

  • @svdfxd
    @svdfxd 5 ปีที่แล้ว +1

    As usual very nice explanation. And a big thanks to your buddy who films all videos religiously.

    • @BackToBackSWE
      @BackToBackSWE  5 ปีที่แล้ว +1

      hahaha, it is a religion at this point

  • @vraih4847
    @vraih4847 4 ปีที่แล้ว +1

    You simplified such a difficult problem to a clean and simplified solution....Amazing!!!
    And the github code is commented so well, I didn't find any difficulty understanding it.
    Keep up this good work bro...appreciate it!!!

    • @BackToBackSWE
      @BackToBackSWE  4 ปีที่แล้ว

      ye, go flourish internet friend

  • @satyadeeproat2012
    @satyadeeproat2012 3 ปีที่แล้ว +5

    Really good explanation to divide backtracking problems in goals, choice and constraint. Backtracking problems get really easy thinking in this way

  • @jayram.deshpande
    @jayram.deshpande 3 ปีที่แล้ว

    amazingly explained ! Bravo !

  • @RK-nw1nq
    @RK-nw1nq 4 ปีที่แล้ว +2

    Such a great explanation and your energy, it was amazing which really helps in understanding the concept better. GREAT WORK!!

  • @teki9845
    @teki9845 2 ปีที่แล้ว

    Amazing video man , thank you so much !!!!!!!!

  • @TanujMishra077
    @TanujMishra077 5 ปีที่แล้ว +2

    Great explanation. You guys are awesome. Keep up the good work. Subscribed.

  • @shriyadas925
    @shriyadas925 5 ปีที่แล้ว +1

    Awesome explanation. Best video on this topic! Loved it!

  • @bokams3385
    @bokams3385 3 ปีที่แล้ว +2

    It’s superb analysis ,I have gone through a lot of blogs sites but I couldn’t understand finally I understand thanks a lot ,keep rocking

  • @hackerandpainter
    @hackerandpainter 3 ปีที่แล้ว

    you are a skinny legend dude. love your videos pls keep it up!! would love to see a vid on strongly connected components/ tarjan algorithm from you

  • @adhoc3018
    @adhoc3018 3 ปีที่แล้ว

    Brilliant explanation.

  • @IlyaBoytsov-dt8lt
    @IlyaBoytsov-dt8lt 4 ปีที่แล้ว +2

    Hi, Ben. Starting watching your videos during new year holidays was a great idea for me. Before that I was watching different algorithm tutorials on youtube, but it can`t be compared with your effort and explanations. Hope to see more from you, my special wish to your channel is to make more videos of new and latest problems that come from different companies interviews.
    It is important for learning because some problems are "classic" and despite of the fact that intuition behind them is still of crucial importance, that would be nice to have some "fresh" problems! Or maybe some variations of older problems...
    One more time thank you, i am going to join your coding interview class and keep learning.
    Best wishes from Russia,
    Ilya

  • @pablogalindo2089
    @pablogalindo2089 3 ปีที่แล้ว +1

    I love the way you teach!! very helpful

  • @vivek4490
    @vivek4490 3 ปีที่แล้ว

    awesome explanation!

  • @ruchikasalwan1285
    @ruchikasalwan1285 4 ปีที่แล้ว +1

    Good one! Explained really well!

  • @muralivenuthyagarajan5767
    @muralivenuthyagarajan5767 5 ปีที่แล้ว +1

    Awesome explanation. Easy to understand.

  • @rahulsaxena9103
    @rahulsaxena9103 4 ปีที่แล้ว +1

    You are awesome!!. Such a lucid explanation!

  • @F.R.A.N.K.I.E
    @F.R.A.N.K.I.E 3 ปีที่แล้ว

    You're nothing less than a hero, thank you!

  • @jacksonsouza5232
    @jacksonsouza5232 5 ปีที่แล้ว +1

    Very clear explanation of backtracking at the beginning, thanks!

  • @avrillovugne
    @avrillovugne 5 ปีที่แล้ว +1

    Thank you Ben, great explanation!

  • @eltonmurillo1909
    @eltonmurillo1909 3 ปีที่แล้ว

    thanks for the video. thank you for drilling the principles! this helps tremendously. recursion can get pretty difficult. the longer you think about it the more confusing it gets lol...

  • @0x1h0b
    @0x1h0b 5 ปีที่แล้ว +2

    back tracking is a real pain. but you made it look so easy . thank you man !... waiting for more interview problems like this........:-)

  • @jjlovekdw
    @jjlovekdw 4 ปีที่แล้ว +1

    Thank you so much for explaining this problem, vert easy to understand and very useful for my preparation of my whiteboard interview.
    Hopeful it will goes will next week.

  • @ismailahmad9597
    @ismailahmad9597 ปีที่แล้ว

    The concept was tough enough that I had to rewind a few times, pause, and think. But the explanation, method of presentation, and such was amazing. Thanks a ton!

    • @ismailahmad9597
      @ismailahmad9597 ปีที่แล้ว

      The dynamic with the camera man is fun too

  • @adipratapsinghaps
    @adipratapsinghaps 2 ปีที่แล้ว

    if -> our goal
    else -> loop (pick a choice, check constraints [if valid, go deeper], undo choice)
    Sweet!!!

  • @27k76
    @27k76 4 ปีที่แล้ว +1

    Excellent video as always, planning to join your class soon. Might join next month , a little busy this month unfortunately.

  • @Ty1er
    @Ty1er 3 ปีที่แล้ว

    Awesome work
    Helped me A LOT
    THANKS 🤍

  • @siddhantsharma6747
    @siddhantsharma6747 4 ปีที่แล้ว +7

    Dude I have no idea how you don't have 1M subscribers by now.

    • @BackToBackSWE
      @BackToBackSWE  4 ปีที่แล้ว

      The channel is young and niche. We do not have content that scales yet.

    • @hezekiahbranch5461
      @hezekiahbranch5461 4 ปีที่แล้ว

      Agreed!!

    • @vigneshkrishnan3192
      @vigneshkrishnan3192 4 ปีที่แล้ว

      Get a guy who does good video editing. your channel will surely sky rocket.

  • @srikantsharma6430
    @srikantsharma6430 4 ปีที่แล้ว +1

    Appreciate your hard work.

  • @farhanuddinkazi3051
    @farhanuddinkazi3051 5 ปีที่แล้ว +1

    Thanks, it was really helpful.

  • @heyyyyyworld
    @heyyyyyworld 2 ปีที่แล้ว +1

    Thank you!!!!

  • @josephwong2832
    @josephwong2832 4 ปีที่แล้ว +1

    Love your teaching style bro

  • @Paradise-kv7fn
    @Paradise-kv7fn 5 ปีที่แล้ว +2

    I liked the tutorial series...I saw your subset and permutation videos and I somehow managed to come up with the solution to this problem all by myself...so thanks for the wonderful explanation of this topic...however, I couldn't come up with all the possible placements for the queen

    • @BackToBackSWE
      @BackToBackSWE  5 ปีที่แล้ว

      Nice. And what do you mean by " I couldn't come up with all the possible placements for the queen". Like you coded it and it has a bug or you don't understand or...yeah...confused.

    • @Paradise-kv7fn
      @Paradise-kv7fn 5 ปีที่แล้ว +1

      @@BackToBackSWE currently my solution gives me only 1 possible arrangements...but i was unable to modify it so that it returns me the total numbers of possible valid arrangements for a given nxn board...can you help me on that?
      I was thinking of calling our helper function for each column in the first row i.e for each cell in the first row....that will ensure that we cover all possible cases and not just return trie when we find our first valid arrangement....but before calling helper function with a new column value in the first row, we will check if it has already not been peocessed as a valid position by one of our previous calls to the helper function... but i am.not sure if it would work

    • @BackToBackSWE
      @BackToBackSWE  5 ปีที่แล้ว

      @@Paradise-kv7fn check other solutions on Leetcode, I'd love to help but I'm busy-ish today

  • @shikharsaxena4432
    @shikharsaxena4432 4 ปีที่แล้ว

    Thanks a lot for such an amazing explanation, I have my coding round for Twitter this week, I hope I clear it. 🤞

  • @tlj77
    @tlj77 4 ปีที่แล้ว +1

    Really nice, thanks man

  • @nishantjain2128
    @nishantjain2128 4 ปีที่แล้ว +1

    Man these 3 points are really great... i am able to solve now various backtracking problems on my own

  • @joshwahnon854
    @joshwahnon854 2 ปีที่แล้ว +1

    Very clear, very well explained. Can you do a video on the use of DPLL algorithm and what types of problem to use it on?

    • @BackToBackSWE
      @BackToBackSWE  2 ปีที่แล้ว

      You can subscribe to our DSA course with a flat 30% off for some amazing content b2bswe.co/3HhvIlV

  • @bhushanshinde4227
    @bhushanshinde4227 2 ปีที่แล้ว

    Good job boy!

  • @Palmoghe
    @Palmoghe 5 ปีที่แล้ว +2

    Appreciate the passion and efforts. Kudos to you two! ++Subscribers :)

  • @siddhantrai7529
    @siddhantrai7529 4 ปีที่แล้ว +1

    Brilliant explanation

  • @prince26902690
    @prince26902690 2 ปีที่แล้ว

    excellent vidoe.. want to understand the math behind IsValid? Any pointers?

  • @ziedbrahmi4812
    @ziedbrahmi4812 2 ปีที่แล้ว

    THANK YOU

  • @tandonneeraj
    @tandonneeraj 4 ปีที่แล้ว +1

    Very clear explanation.

    • @BackToBackSWE
      @BackToBackSWE  4 ปีที่แล้ว

      thanks

    • @tandonneeraj
      @tandonneeraj 4 ปีที่แล้ว

      ​@@BackToBackSWE Is the code shown working. What if the row results in no solution. For if row[0] = 0 , row[1] = 2 then row[2] has no solution. It should backtrack with remove but for some reason I do not reach the solution.

  • @krishnapathi572
    @krishnapathi572 3 ปีที่แล้ว +1

    That is a damn good explanation and awesome energy bro :)

  • @sumandas829
    @sumandas829 3 ปีที่แล้ว +1

    Best video on Internet

  • @ipals1234
    @ipals1234 4 ปีที่แล้ว +2

    The way you explain details is very good. A small suggestion for code: you can keep both add and remove colPlacements inside if loop, it would avoid adding and removing current col to colplacements list if the valid Placement is false.

  • @nocode659
    @nocode659 4 ปีที่แล้ว +1

    First video of you i Watched and subscribed! DOT

  • @a_k__
    @a_k__ 4 ปีที่แล้ว +1

    Amazing job man. Well done.

    • @BackToBackSWE
      @BackToBackSWE  4 ปีที่แล้ว +1

      ye

    • @a_k__
      @a_k__ 4 ปีที่แล้ว +1

      @@BackToBackSWE It would have been great if you could make a video about the behavioral/phone screen part of the interview for SWE as well.

    • @BackToBackSWE
      @BackToBackSWE  4 ปีที่แล้ว +1

      @@a_k__ ok

  • @NaveenKumar-os8dv
    @NaveenKumar-os8dv 2 ปีที่แล้ว

    10:38 You don't know how much I needed to understand that part. Thank you!! I was so confused. I just didn't know "HOW TO BACTRACK" The most confusing part for me was : :how the heck making it equal to null(or zero - meaning removing it(our choice)) makes our function go back?? Yeah I can find one way or n way to place queens, but how to find all of them?? and that's where your video help me, I missed the point that the loop is always increasing, if my choice is removed next time it will choose for col+1 and (not the 'col' instead).

  • @anjurawat9274
    @anjurawat9274 4 ปีที่แล้ว +1

    very helpful and as I always say.. I love ur way of teaching sir

    • @BackToBackSWE
      @BackToBackSWE  4 ปีที่แล้ว +1

      hey

    • @anjurawat9274
      @anjurawat9274 4 ปีที่แล้ว

      @@BackToBackSWE helo sir i sent u a msg request on ur fb page please check out

  • @madiyar8079
    @madiyar8079 4 ปีที่แล้ว +1

    amazing, thank you

  • @jomosis9234
    @jomosis9234 4 ปีที่แล้ว +1

    I love your explanation for backtracking problems. Now I've got a good understanding of the frame of doing such kind of problem, thank you so much!!! But one more thing I want to make sure is that whenever a backtracking function call is exhausted,it returns to its higher layer stack, is undos the first thing that it will execute?
    For example:
    backtrack(...)
    undos
    let's say backtrack(1) return to backtrack(2) ,it will undo what it did to " 1 ",and then keep backtracking. Do I get it?
    For more complicated backtracking problems:
    backtrack 1
    some orders
    backtrack 2
    these 2 backtracking calls are different. If backtrack 1 is exhausted. Does the process work like this: backtrack 1 returns to the previous stack, then execute these orders, and then do the backtrack 2 until it is also exhausted , and then return to the next previous stack of backtrack 1. If some orders are undos , will this process change?

    • @BackToBackSWE
      @BackToBackSWE  4 ปีที่แล้ว

      can you consolidate your question, it is hard to parse this all

  • @mathavraj9378
    @mathavraj9378 3 ปีที่แล้ว +2

    When he begins the video by saying he took three months to grasp the concept.. I felt that

  • @mayankdandwani9951
    @mayankdandwani9951 4 ปีที่แล้ว +1

    Bro your explanations are damn good !!!!!!!!!!!

  • @SlowMister112
    @SlowMister112 3 ปีที่แล้ว +1

    the nqueens can also be solved by using a knight layout: queens can attack like every other unit except the knight, so if one finds out a combination exclusively for knights it solves the nqueens too

  • @lokeshs9449
    @lokeshs9449 3 ปีที่แล้ว +1

    Your'e BackTracking Hero Man

    • @BackToBackSWE
      @BackToBackSWE  3 ปีที่แล้ว

      thanks lol, always wanted to be that

  • @ramansb1008
    @ramansb1008 2 ปีที่แล้ว

    naah i had 2 come back again and comment after i coded my own solution u r a legend

    • @BackToBackSWE
      @BackToBackSWE  2 ปีที่แล้ว

      Thank You, Glad you liked it.
      Do check out backtobackswe.com/platform/content
      and please recommend us to your family and friends :)

  • @rozzero9664
    @rozzero9664 4 ปีที่แล้ว +1

    hats off to you .. you are the first non Indian tutorial channel

  • @ramansb1008
    @ramansb1008 2 ปีที่แล้ว

    ayyy ur a boss, I was struggling on this shit man !

    • @BackToBackSWE
      @BackToBackSWE  2 ปีที่แล้ว

      Thank You, Glad you liked it.
      Do check out backtobackswe.com/platform/content
      and please recommend us to your family and friends :)

  • @ogbonnakingsley9908
    @ogbonnakingsley9908 3 ปีที่แล้ว +2

    Great explanation. I have a newbie question though. Why do we need to backtrack on every iteration of the for-loop. What if the last choice made was correct. What purpose does undoing the choice serve? You made a statement about the program continuing from the last point of the stack. How does undoing our choice serve that purpose?

    • @IkethRacing
      @IkethRacing ปีที่แล้ว

      because the alternative is keeping a complete board representation for each move which gobbles up your ram

  • @paulancajima
    @paulancajima ปีที่แล้ว

    Thanks

  • @suchychleb9573
    @suchychleb9573 3 ปีที่แล้ว +1

    great job

  • @subujekupadupa
    @subujekupadupa 3 ปีที่แล้ว

    I get everything but can someone explain why in isValid method you compare every col placement against the last col placement? If two placements in the middle are wrong then your method will return true even though it is not valid. Am I missing something? If you run this method with arguments 2,4,4,3 it will return true where it's supposed to fail.

  • @naveen3192
    @naveen3192 2 ปีที่แล้ว

    Do we undo our choice to get a new set of result? Or why do we do that?

  • @kevinsu2219
    @kevinsu2219 5 ปีที่แล้ว +3

    nice explanation

  • @chrisqin8780
    @chrisqin8780 4 ปีที่แล้ว +1

    Hey thank you so much for this amazing video. However, I tried your code on my IDE and I guess if you add a return after you add the colPlacements to your result, it will be better right?

  • @geetusharma3923
    @geetusharma3923 4 ปีที่แล้ว +1

    Awesome video 👌.. thanks a lot .🔥. please upload more videos...

  • @Milchmann2
    @Milchmann2 5 ปีที่แล้ว +1

    Beautiful!

  • @drosegetshoes
    @drosegetshoes 5 ปีที่แล้ว +1

    Thank you.

  • @airysm
    @airysm 5 ปีที่แล้ว +2

    I think my problem with recursive problems is how to format my code if that makes sense,
    like how many helper functions to make and what parameters are each going to take. Any tips for that?
    Btw I forgot how I found your channel, but I love the vids!

    • @BackToBackSWE
      @BackToBackSWE  5 ปีที่แล้ว +6

      Yes, this is the hardest part. Thinking recursively took me SEVERAL months to understand and become proficient at. Some just get it, some don't. I didn't.
      1.) The more practice you do and the more problems you see, the better you will get at defining base and recursive cases. This is sadly true, a lot of work.
      2.) Before even making a driver function, I scaffold out the signature of the recursive helper function. The biggest things that influence this are #1 and #3 of the "keys" I mentioned, your Choices & Goal. In this problem you see we pass in a "colPlacements" array to remember our CHOICES as well as the row # that we are working on and a "result" array to remember our answers, etc. It is not always this straightforward but the key is to ask.
      "What subproblems am I solving and what do I need in each to make things work?" For this problem a subproblem is solving a row. When n rows are solved we are done. So that's definitely a param and will be used in the base case since it is our GOAL.
      Otherwise it is just practice, trial and error, and eventually proficiency increases greatly.

  • @sandile13809
    @sandile13809 2 ปีที่แล้ว

    ur epic bro thank you sm