{"id":2235,"date":"2020-07-29T07:34:59","date_gmt":"2020-07-29T07:34:59","guid":{"rendered":"https:\/\/blog.prepbytes.com\/?p=2235"},"modified":"2022-03-30T13:25:24","modified_gmt":"2022-03-30T13:25:24","slug":"monopoly","status":"publish","type":"post","link":"https:\/\/prepbytes.com\/blog\/monopoly\/","title":{"rendered":"MONOPOLY"},"content":{"rendered":"<p><img decoding=\"async\" src=\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1645180200604-Article_416.png\" alt=\"\" \/><\/p>\n<h3>CONCEPTS USED:<\/h3>\n<blockquote>\n<p>Recursion and memorization.<\/p>\n<\/blockquote>\n<h3>DIFFICULTY LEVEL:<\/h3>\n<blockquote>\n<p>Medium.<\/p>\n<\/blockquote>\n<h3>PROBLEM STATEMENT$($SIMPLIFIED$)$:<\/h3>\n<blockquote>\n<p>There are notes having values V1,V2,V3&#8230;Vn arranged in a row. You and your friend take turns alternatively. In each turn you can select either the first or the last note in the row and remove it. The note&#8217;s value gets added to your balance. Now you need to determine how you should select the notes such that in the end you have more cash than your friend.<br \/>\nYou always go first.<\/p>\n<\/blockquote>\n<h4>For Example :<\/h4>\n<pre><code>2\n4\n5 3 7 15\n4\n8 15 1 6\n\nFor first testcase\nYou - 15\nFriend - 7\nYou - 5\nFriend - 3\nSo total 15 + 5 =20\n<\/code><\/pre>\n<h3>OBSERVATION:<\/h3>\n<blockquote>\n<p>You have to think about your opponent&#8217;s move means options available for the your opponent once you are done with the move, What your opponent will pick (he is equally clever and tries to leave you with minimum values to be chosen from) and  then what you will chose.<\/p>\n<\/blockquote>\n<h3>SOLVING APPROACH:<\/h3>\n<blockquote>\n<p><strong>WRONG APPROACH:<\/strong><br \/>\n<em>GREEDY<\/em> .You may think that selecting the maximum value from the two ends will get you the maximum sum of notes.But that&#8217;s wrong!!<\/p>\n<\/blockquote>\n<p>Look at this example:<\/p>\n<pre><code>14 20 6 8\nIf you use greedy technique , you would end up with 14+8= 22 notes and your opponent would win with 20+6=26 notes. \nWhereas the correct answer to this test case will be:\nyou :20+8=28 notes,\nyour opponent: 6+14=20 notes.<\/code><\/pre>\n<p>You are encouraged to try this problem ,before looking at the solution.<\/p>\n<p><a href=\"https:\/\/mycode.prepbytes.com\/problems\/dynamic-programming\/MONOPOLY\" title=\"Go to mycode.prepbytes.com\" target=\"_blank\" rel=\"noopener noreferrer\"><u><strong><\/strong><\/u><\/a><\/p>\n<p>Have you noticed that your opponent is equally clever??<br \/>\nWe can clearly see that each player is making the move by keeping in mind the two moves which can be made in future and pick the best of them.<br \/>\nLet\u2019s make it more clear- Suppose we have coins lined up from Ci to Cj with the values from Vi to Vj respectively.<\/p>\n<p><strong>In every move you have 2 options \u2013<\/strong><\/p>\n<p>Either pick the ith coin (from starting)<br \/>\nOR pick the jth coin ( from the end).<\/p>\n<p>Let\u2019s discuss both the options<\/p>\n<p>You the ith coin (from starting)<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/prepbytes.com\/blog\/wp-content\/uploads\/2020\/06\/you-choose-first.png\" alt=\"\" \/><\/p>\n<ol>\n<li>You choose the ith coin with value Ci: The opponent either chooses (i+1)<sup>th<\/sup> coin or jth coin. The opponent intends to choose the coin which leaves you with minimum value.<br \/>\ni.e. The user can collect the value Ci + min(F(i+2, j), F(i+1, j-1) ).<\/li>\n<\/ol>\n<p><img decoding=\"async\" src=\"https:\/\/prepbytes.com\/blog\/wp-content\/uploads\/2020\/06\/youchooselast-1.png\" alt=\"\" \/><\/p>\n<ol start=\"2\">\n<li>You choose the jth coin with value Cj: The opponent either chooses ith coin or (j-1)<sup>th<\/sup> coin. The opponent intends to choose the coin which leaves you with minimum value.<br \/>\ni.e. The user can collect the value Cj + min(F(i+1, j-1), F(i, j-2) ).<br \/>\nFollowing is recursive solution that is based on above two choices. We take the maximum of two choices.<\/p>\n<pre><code>F(i, j) = Max { Ci + Min{F(i+2,j), F(i+1, j-1)} ,\n      Cj + Min{F(i+1,j-1), F(i, j-2)}}<\/code><\/pre>\n<\/li>\n<\/ol>\n<h3>SOLUTIONS:<\/h3>\n<p>\t\t\t\t\t\t<style>\r\n\t\t\t\t\r\n\t\t\t\t\t#tab_container_2236 {\r\n\toverflow:hidden;\r\n\tdisplay:block;\r\n\twidth:100%;\r\n\tborder:0px solid #ddd;\r\n\tmargin-bottom:30px;\r\n\t}\r\n\r\n#tab_container_2236 .tab-content{\r\n\tpadding:20px;\r\n\tborder: 1px solid #e6e6e6 !important;\r\n\tmargin-top: 0px;\r\n\tbackground-color:#ffffff !important;\r\n\tcolor: #000000 !important;\r\n\tfont-size:16px !important;\r\n\tfont-family: Open Sans !important;\r\n\t\r\n\t\tborder: 1px solid #e6e6e6 !important;\r\n\t}\r\n#tab_container_2236 .wpsm_nav-tabs {\r\n    border-bottom: 0px solid #ddd;\r\n}\r\n#tab_container_2236 .wpsm_nav-tabs > li.active > a, #tab_container_2236 .wpsm_nav-tabs > li.active > a:hover, #tab_container_2236 .wpsm_nav-tabs > li.active > a:focus {\r\n\tcolor: #000000 !important;\r\n\tcursor: default;\r\n\tbackground-color: #ffffff !important;\r\n\tborder: 1px solid #e6e6e6 !important;\r\n}\r\n\r\n#tab_container_2236 .wpsm_nav-tabs > li > a {\r\n    margin-right: 0px !important; \r\n    line-height: 1.42857143 !important;\r\n    border: 1px solid #d5d5d5 !important;\r\n    border-radius: 0px 0px 0 0 !important; \r\n\tbackground-color: #e8e8e8 !important;\r\n\tcolor: #000000 !important;\r\n\tpadding: 15px 18px 15px 18px !important;\r\n\ttext-decoration: none !important;\r\n\tfont-size: 14px !important;\r\n\ttext-align:center !important;\r\n\tfont-family: Open Sans !important;\r\n}\r\n#tab_container_2236 .wpsm_nav-tabs > li > a:focus {\r\noutline: 0px !important;\r\n}\r\n\r\n#tab_container_2236 .wpsm_nav-tabs > li > a:before {\r\n\tdisplay:none !important;\r\n}\r\n#tab_container_2236 .wpsm_nav-tabs > li > a:after {\r\n\tdisplay:none !important ;\r\n}\r\n#tab_container_2236 .wpsm_nav-tabs > li{\r\npadding:0px !important ;\r\nmargin:0px;\r\n}\r\n\r\n#tab_container_2236 .wpsm_nav-tabs > li > a:hover , #tab_container_2236 .wpsm_nav-tabs > li > a:focus {\r\n    color: #000000 !important;\r\n    background-color: #e8e8e8 !important;\r\n\tborder: 1px solid #d5d5d5 !important;\r\n\t\r\n}\r\n#tab_container_2236 .wpsm_nav-tabs > li > a .fa{\r\n\r\nmargin-right:5px !important;\r\n\r\nmargin-left:5px !important;\r\n\r\n\r\n}\r\n\r\n\t\t#tab_container_2236 .wpsm_nav-tabs a{\r\n\t\t\tbackground-image: none;\r\n\t\t\tbackground-position: 0 0;\r\n\t\t\tbackground-repeat: repeat-x;\r\n\t\t}\r\n\t\t\t\r\n\r\n\r\n#tab_container_2236 .wpsm_nav-tabs > li {\r\n    float: left;\r\n    margin-bottom: -1px !important;\r\n\tmargin-right:0px !important; \r\n}\r\n\r\n\r\n#tab_container_2236 .tab-content{\r\noverflow:hidden !important;\r\n}\r\n\r\n\r\n@media (min-width: 769px) {\r\n\r\n\t#tab_container_2236 .wpsm_nav-tabs > li{\r\n\t\tfloat:left !important ;\r\n\t\t\t\tmargin-right:-1px !important;\r\n\t\t\t\t\t}\r\n\t#tab_container_2236 .wpsm_nav-tabs{\r\n\t\tfloat:none !important;\r\n\t\tmargin:0px !important;\r\n\t}\r\n\r\n\t#tab_container_2236 .wpsm_nav-tabs > li {\r\n\t\t\t\t\r\n\t}\r\n\t#tab_container_2236 .wpsm_nav{\r\n\t\t\t}\r\n\r\n}\r\n\r\n\r\n\r\n@media (max-width: 768px) {\r\n\t#tab_container_2236 .wpsm_nav-tabs > li {\r\n\t\t\t\t\r\n\t}\r\n\t#tab_container_2236 .wpsm_nav{\r\n\t\t\t}\r\n}\r\n\r\n\r\n\t.wpsm_nav-tabs li:before{\r\n\t\tdisplay:none !important;\r\n\t}\r\n\r\n\t@media (max-width: 768px) {\r\n\t\t\t\t\r\n\t\t\t\t.wpsm_nav-tabs{\r\n\t\t\tmargin-left:0px !important;\r\n\t\t\tmargin-right:0px !important; \r\n\t\t\t\r\n\t\t}\r\n\t\t\t\t#tab_container_2236 .wpsm_nav-tabs > li{\r\n\t\t\tfloat:none !important;\r\n\t\t}\r\n\t\t\t\r\n\t}\t\t\t\t<\/style>\r\n\t\t\t\t<div id=\"tab_container_2236\" >\r\n\t \r\n\t\t\t\t\t<ul class=\"wpsm_nav wpsm_nav-tabs\" role=\"tablist\" id=\"myTab_2236\">\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t<li role=\"presentation\"  class=\"active\"  onclick=\"do_resize()\">\r\n\t\t\t\t\t\t\t\t<a href=\"#tabs_desc_2236_1\" aria-controls=\"tabs_desc_2236_1\" role=\"tab\" data-toggle=\"tab\">\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<i class=\"fa fa-code\"><\/i> \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t<span>C<\/span>\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t<\/a>\r\n\t\t\t\t\t\t\t<\/li>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t<li role=\"presentation\"  onclick=\"do_resize()\">\r\n\t\t\t\t\t\t\t\t<a href=\"#tabs_desc_2236_2\" aria-controls=\"tabs_desc_2236_2\" role=\"tab\" data-toggle=\"tab\">\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<i class=\"fa fa-code\"><\/i> \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t<span>C++<\/span>\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t<\/a>\r\n\t\t\t\t\t\t\t<\/li>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t<li role=\"presentation\"  onclick=\"do_resize()\">\r\n\t\t\t\t\t\t\t\t<a href=\"#tabs_desc_2236_3\" aria-controls=\"tabs_desc_2236_3\" role=\"tab\" data-toggle=\"tab\">\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<i class=\"fa fa-code\"><\/i> \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t<span>Java<\/span>\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t<\/a>\r\n\t\t\t\t\t\t\t<\/li>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t<li role=\"presentation\"  onclick=\"do_resize()\">\r\n\t\t\t\t\t\t\t\t<a href=\"#tabs_desc_2236_4\" aria-controls=\"tabs_desc_2236_4\" role=\"tab\" data-toggle=\"tab\">\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<i class=\"fa fa-code\"><\/i> \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t<span>Python<\/span>\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t<\/a>\r\n\t\t\t\t\t\t\t<\/li>\r\n\t\t\t\t\t\t\t\t\t\t\t <\/ul>\r\n\r\n\t\t\t\t\t  <!-- Tab panes -->\r\n\t\t\t\t\t  <div class=\"tab-content\" id=\"tab-content_2236\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t <div role=\"tabpanel\" class=\"tab-pane  in active \" id=\"tabs_desc_2236_1\">\r\n\t\t\t\t\t\t\t\t<!-- wp:enlighter\/codeblock {\"language\":\"c\"} -->\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"c\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\r\n #include <stdio.h>\r\n     int dp[150][150];\r\n     int min(int x,int y)\r\n    {\r\n    if(x<y)\r\n     return x;\r\n     return y;\r\n    }int max(int x,int y)\r\n    {\r\n    if(x>y)\r\n    return x;\r\n    return y;\r\n    }\r\n    int util(int a[],int i,int j){\r\n    \/\/ if() \r\n\r\n    if(j<i)return 0;\r\n    if(i+1==j){\r\n        \/\/  cout<<\"a\"<<i<<\" \"<<j<<endl;\r\n        return max(a[i],a[j]);\r\n    }\r\n    if(dp[i][j]!=-1)return dp[i][j];\r\n    dp[i][j]=max(a[i]+min(util(a,i+1,j-1),util(a,i+2,j)),a[j]+min(util(a,i+1,j-1),util(a,i,j-2)));\r\n    \/\/ cout<<dp[i][j]<<\" \"<<i<<\" \"<<j<<endl;\r\n    return dp[i][j];\r\n    }\r\n    int ops(int a[],int n){\r\n    for(int i=0;i<n;i++){\r\n        for(int j=0;j<n;j++)\r\n            dp[i][j]=-1;\r\n    }\r\n    return util(a,0,n-1);\r\n\r\n    }\r\n\r\n    int main()\r\n    {\r\n    \/\/code\r\n    int t;\r\n    scanf(\"%d\",&t);\r\n    while(t--){\r\n        int n;\r\n        scanf(\"%d\",&n);\r\n        int a[n];\r\n        for(int i=0;i<n;i++)    \r\n            scanf(\"%d\",&a[i]);\r\n        printf(\"%d&#92;n\",ops(a,n));\r\n    }\r\n    return 0;\r\n    }\r\n<\/pre>\r\n<!-- \/wp:enlighter\/codeblock -->\r\n\r\n\r\n\r\n\r\n\t\t\t\t\t\t <\/div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t <div role=\"tabpanel\" class=\"tab-pane \" id=\"tabs_desc_2236_2\">\r\n\t\t\t\t\t\t\t\t<!-- wp:enlighter\/codeblock {\"language\":\"cpp\"} -->\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"cpp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\r\n#include<bits\/stdc++.h>\r\n     using namespace std;\r\n    int dp[150][150];\r\n\r\n    int util(int a[],int i,int j){\r\n    \/\/ if() \r\n\r\n    if(j<i)return 0;\r\n    if(i+1==j){\r\n        \/\/  cout<<\"a\"<<i<<\" \"<<j<<endl;\r\n        return max(a[i],a[j]);\r\n    }\r\n    if(dp[i][j]!=-1)return dp[i][j];\r\n    dp[i][j]=max(a[i]+min(util(a,i+1,j-1),util(a,i+2,j)),a[j]+min(util(a,i+1,j-1),util(a,i,j-2)));\r\n    \/\/ cout<<dp[i][j]<<\" \"<<i<<\" \"<<j<<endl;\r\n    return dp[i][j];\r\n    }\r\n    int ops(int a[],int n){\r\n    for(int i=0;i<n;i++){\r\n        for(int j=0;j<n;j++)\r\n            dp[i][j]=-1;\r\n    }\r\n    return util(a,0,n-1);\r\n\r\n    }\r\n\r\n    int main()\r\n    {\r\n    \/\/code\r\n    int t;\r\n    cin>>t;\r\n    while(t--){\r\n        int n;\r\n        cin>>n;\r\n        int a[n];\r\n        for(int i=0;i<n;i++)    \r\n            cin>>a[i];\r\n        cout<<ops(a,n)<<endl;\r\n    }\r\n    return 0;\r\n    }\r\n<\/pre>\r\n<!-- \/wp:enlighter\/codeblock -->\t\t\t\t\t\t <\/div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t <div role=\"tabpanel\" class=\"tab-pane \" id=\"tabs_desc_2236_3\">\r\n\t\t\t\t\t\t\t\t<!-- wp:enlighter\/codeblock {\"language\":\"java\"} -->\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"java\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\r\n import java.util.*;\r\n    import java.io.*;\r\n     class monopoly { \r\n    static int optimalStrategyOfGame( \r\n        int arr[], int n) \r\n    { \r\n        int table[][] = new int[n][n]; \r\n        int gap, i, j, x, y, z; \r\n        for (gap = 0; gap < n; ++gap) { \r\n            for (i = 0, j = gap; j < n; ++i, ++j) { \r\n                x = ((i + 2) <= j) \r\n                        ? table[i + 2][j] \r\n                        : 0; \r\n                y = ((i + 1) <= (j - 1)) \r\n                        ? table[i + 1][j - 1] \r\n                        : 0; \r\n                z = (i <= (j - 2)) \r\n                        ? table[i][j - 2] \r\n                        : 0; \r\n\r\n                table[i][j] = Math.max( \r\n                    arr[i] + Math.min(x, y), \r\n                    arr[j] + Math.min(y, z)); \r\n            } \r\n        } \r\n\r\n        return table[0][n - 1]; \r\n    } \r\n    public static void main(String[] args) \r\n    { \r\n      Scanner sc = new Scanner(System.in);\r\n        int t= sc.nextInt();\r\n        while(t-- >0 ){\r\n            int n = sc.nextInt();\r\n            int a[]=new int[n];\r\n            for(int i=0;i<n;i++)\r\n            {\r\n                a[i] = sc.nextInt();\r\n            }\r\n        System.out.println( optimalStrategyOfGame(a, n)); }\r\n\r\n    } \r\n    } \r\n}\r\n\r\n<\/pre>\r\n<!-- \/wp:enlighter\/codeblock -->\t\t\t\t\t\t <\/div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t <div role=\"tabpanel\" class=\"tab-pane \" id=\"tabs_desc_2236_4\">\r\n\t\t\t\t\t\t\t\t<!-- wp:enlighter\/codeblock {\"language\":\"Python\"} -->\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"Python\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\r\ndp = [[0 for i in range(150)] for j in range(150)]\r\n\r\ndef util(a, i, j):\r\n\t\r\n\tglobal dp\r\n\r\n\tif(j < i):\r\n\t\treturn 0\r\n\r\n\tif(i + 1 == j):\r\n\t\treturn max(a[i],a[j])\r\n\r\n\tif(dp[i][j]!=-1):\r\n\t\treturn dp[i][j]\r\n\t\r\n\tdp[i][j] = max(a[i] + min(util(a, i + 1, j - 1),util(a, i + 2, j)),a[j] + min(util(a, i + 1, j - 1), util(a, i, j - 2)))\r\n\t\r\n\treturn dp[i][j]\r\n\t\r\ndef ops( a, n):\r\n\t\r\n\tfor i in range(n):\r\n\r\n\t\tfor j in range(n):\r\n\r\n\t\t\tdp[i][j] = -1\r\n\t\r\n\treturn util(a, 0, n - 1)\r\n\t\r\n\r\nfor _ in range(int(input())):\r\n\r\n\tn = int(input())\r\n\ta = list(map(int,input().split()))\r\n\tprint(ops(a, n))\r\n<\/pre>\r\n<!-- \/wp:enlighter\/codeblock -->\t\t\t\t\t\t <\/div>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t <\/div>\r\n\t\t\t\t\t \r\n\t\t\t\t <\/div>\r\n <script>\r\n\t\tjQuery(function () {\r\n\t\t\tjQuery('#myTab_2236 a:first').tab('show')\r\n\t\t});\r\n\t\t\r\n\t\t\t\tjQuery(function(){\r\n\t\t\tvar b=\"fadeIn\";\r\n\t\t\tvar c;\r\n\t\t\tvar a;\r\n\t\t\td(jQuery(\"#myTab_2236 a\"),jQuery(\"#tab-content_2236\"));function d(e,f,g){\r\n\t\t\t\te.click(function(i){\r\n\t\t\t\t\ti.preventDefault();\r\n\t\t\t\t\tjQuery(this).tab(\"show\");\r\n\t\t\t\t\tvar h=jQuery(this).data(\"easein\");\r\n\t\t\t\t\tif(c){c.removeClass(a);}\r\n\t\t\t\t\tif(h){f.find(\"div.active\").addClass(\"animated \"+h);a=h;}\r\n\t\t\t\t\telse{if(g){f.find(\"div.active\").addClass(\"animated \"+g);a=g;}else{f.find(\"div.active\").addClass(\"animated \"+b);a=b;}}c=f.find(\"div.active\");\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t\t\r\n\r\n\t\tfunction do_resize(){\r\n\r\n\t\t\tvar width=jQuery( '.tab-content .tab-pane iframe' ).width();\r\n\t\t\tvar height=jQuery( '.tab-content .tab-pane iframe' ).height();\r\n\r\n\t\t\tvar toggleSize = true;\r\n\t\t\tjQuery('iframe').animate({\r\n\t\t\t    width: toggleSize ? width : 640,\r\n\t\t\t    height: toggleSize ? height : 360\r\n\t\t\t  }, 250);\r\n\r\n\t\t\t  toggleSize = !toggleSize;\r\n\t\t}\r\n\r\n\r\n\t<\/script>\r\n\t\t\t\t\r\n\t\t\t<br \/>\n[forminator_quiz id=&quot;2239&quot;]<br \/>\n*<em>Space complexity: O(N<\/em>N)**<\/p>\n<p>This article tried to discuss the concept of <strong>Recursion and memorization<\/strong>. Hope this blog helps you understand and solve the problem. To practice more problems on Recursion and memorization you can check out <a href=\"#\"><\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>CONCEPTS USED: Recursion and memorization. DIFFICULTY LEVEL: Medium. PROBLEM STATEMENT$($SIMPLIFIED$)$: There are notes having values V1,V2,V3&#8230;Vn arranged in a row. You and your friend take turns alternatively. In each turn you can select either the first or the last note in the row and remove it. The note&#8217;s value gets added to your balance. Now [&hellip;]<\/p>\n","protected":false},"author":52,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[46],"tags":[],"class_list":["post-2235","post","type-post","status-publish","format-standard","hentry","category-recursion-interview-programming"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.8 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Recursion Interview Programming | Monopoly | Prepbytes<\/title>\n<meta name=\"description\" content=\"You Have to Think About Your Opponent&#039;s Move Means Options Available for the Your Opponent Once You Are Done With the Move, What Your Opponent Will Pick.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/prepbytes.com\/blog\/monopoly\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Recursion Interview Programming | Monopoly | Prepbytes\" \/>\n<meta property=\"og:description\" content=\"You Have to Think About Your Opponent&#039;s Move Means Options Available for the Your Opponent Once You Are Done With the Move, What Your Opponent Will Pick.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/prepbytes.com\/blog\/monopoly\/\" \/>\n<meta property=\"og:site_name\" content=\"PrepBytes Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prepbytes0211\/\" \/>\n<meta property=\"article:published_time\" content=\"2020-07-29T07:34:59+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-03-30T13:25:24+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1645180200604-Article_416.png\" \/>\n<meta name=\"author\" content=\"Prepbytes\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Prepbytes\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/prepbytes.com\/blog\/monopoly\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/prepbytes.com\/blog\/monopoly\/\"},\"author\":{\"name\":\"Prepbytes\",\"@id\":\"http:\/\/43.205.93.38\/#\/schema\/person\/3f7dc4ae851791d5947a7f99df363d5e\"},\"headline\":\"MONOPOLY\",\"datePublished\":\"2020-07-29T07:34:59+00:00\",\"dateModified\":\"2022-03-30T13:25:24+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/prepbytes.com\/blog\/monopoly\/\"},\"wordCount\":439,\"commentCount\":0,\"publisher\":{\"@id\":\"http:\/\/43.205.93.38\/#organization\"},\"image\":{\"@id\":\"https:\/\/prepbytes.com\/blog\/monopoly\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1645180200604-Article_416.png\",\"articleSection\":[\"Recursion Interview Programming\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/prepbytes.com\/blog\/monopoly\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/prepbytes.com\/blog\/monopoly\/\",\"url\":\"https:\/\/prepbytes.com\/blog\/monopoly\/\",\"name\":\"Recursion Interview Programming | Monopoly | Prepbytes\",\"isPartOf\":{\"@id\":\"http:\/\/43.205.93.38\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/prepbytes.com\/blog\/monopoly\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/prepbytes.com\/blog\/monopoly\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1645180200604-Article_416.png\",\"datePublished\":\"2020-07-29T07:34:59+00:00\",\"dateModified\":\"2022-03-30T13:25:24+00:00\",\"description\":\"You Have to Think About Your Opponent's Move Means Options Available for the Your Opponent Once You Are Done With the Move, What Your Opponent Will Pick.\",\"breadcrumb\":{\"@id\":\"https:\/\/prepbytes.com\/blog\/monopoly\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/prepbytes.com\/blog\/monopoly\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/prepbytes.com\/blog\/monopoly\/#primaryimage\",\"url\":\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1645180200604-Article_416.png\",\"contentUrl\":\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1645180200604-Article_416.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/prepbytes.com\/blog\/monopoly\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"http:\/\/43.205.93.38\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Recursion Interview Programming\",\"item\":\"https:\/\/prepbytes.com\/blog\/category\/recursion-interview-programming\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"MONOPOLY\"}]},{\"@type\":\"WebSite\",\"@id\":\"http:\/\/43.205.93.38\/#website\",\"url\":\"http:\/\/43.205.93.38\/\",\"name\":\"PrepBytes Blog\",\"description\":\"ONE-STOP RESOURCE FOR EVERYTHING RELATED TO CODING\",\"publisher\":{\"@id\":\"http:\/\/43.205.93.38\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"http:\/\/43.205.93.38\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"http:\/\/43.205.93.38\/#organization\",\"name\":\"Prepbytes\",\"url\":\"http:\/\/43.205.93.38\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"http:\/\/43.205.93.38\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/blog.prepbytes.com\/wp-content\/uploads\/2025\/07\/uzxxllgloialmn9mhwfe.webp\",\"contentUrl\":\"https:\/\/blog.prepbytes.com\/wp-content\/uploads\/2025\/07\/uzxxllgloialmn9mhwfe.webp\",\"width\":160,\"height\":160,\"caption\":\"Prepbytes\"},\"image\":{\"@id\":\"http:\/\/43.205.93.38\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/prepbytes0211\/\",\"https:\/\/www.instagram.com\/prepbytes\/\",\"https:\/\/www.linkedin.com\/company\/prepbytes\/\",\"https:\/\/www.youtube.com\/channel\/UC0xGnHDrjUM1pDEK2Ka5imA\"]},{\"@type\":\"Person\",\"@id\":\"http:\/\/43.205.93.38\/#\/schema\/person\/3f7dc4ae851791d5947a7f99df363d5e\",\"name\":\"Prepbytes\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"http:\/\/43.205.93.38\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/232042cd1a1ea0e982c96d2a2ec93fb70a8e864e00784491231e7bfe5a9e06b5?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/232042cd1a1ea0e982c96d2a2ec93fb70a8e864e00784491231e7bfe5a9e06b5?s=96&d=mm&r=g\",\"caption\":\"Prepbytes\"},\"url\":\"https:\/\/prepbytes.com\/blog\/author\/gourav-jaincollegedekho-com\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Recursion Interview Programming | Monopoly | Prepbytes","description":"You Have to Think About Your Opponent's Move Means Options Available for the Your Opponent Once You Are Done With the Move, What Your Opponent Will Pick.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/prepbytes.com\/blog\/monopoly\/","og_locale":"en_US","og_type":"article","og_title":"Recursion Interview Programming | Monopoly | Prepbytes","og_description":"You Have to Think About Your Opponent's Move Means Options Available for the Your Opponent Once You Are Done With the Move, What Your Opponent Will Pick.","og_url":"https:\/\/prepbytes.com\/blog\/monopoly\/","og_site_name":"PrepBytes Blog","article_publisher":"https:\/\/www.facebook.com\/prepbytes0211\/","article_published_time":"2020-07-29T07:34:59+00:00","article_modified_time":"2022-03-30T13:25:24+00:00","og_image":[{"url":"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1645180200604-Article_416.png","type":"","width":"","height":""}],"author":"Prepbytes","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Prepbytes","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/prepbytes.com\/blog\/monopoly\/#article","isPartOf":{"@id":"https:\/\/prepbytes.com\/blog\/monopoly\/"},"author":{"name":"Prepbytes","@id":"http:\/\/43.205.93.38\/#\/schema\/person\/3f7dc4ae851791d5947a7f99df363d5e"},"headline":"MONOPOLY","datePublished":"2020-07-29T07:34:59+00:00","dateModified":"2022-03-30T13:25:24+00:00","mainEntityOfPage":{"@id":"https:\/\/prepbytes.com\/blog\/monopoly\/"},"wordCount":439,"commentCount":0,"publisher":{"@id":"http:\/\/43.205.93.38\/#organization"},"image":{"@id":"https:\/\/prepbytes.com\/blog\/monopoly\/#primaryimage"},"thumbnailUrl":"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1645180200604-Article_416.png","articleSection":["Recursion Interview Programming"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/prepbytes.com\/blog\/monopoly\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/prepbytes.com\/blog\/monopoly\/","url":"https:\/\/prepbytes.com\/blog\/monopoly\/","name":"Recursion Interview Programming | Monopoly | Prepbytes","isPartOf":{"@id":"http:\/\/43.205.93.38\/#website"},"primaryImageOfPage":{"@id":"https:\/\/prepbytes.com\/blog\/monopoly\/#primaryimage"},"image":{"@id":"https:\/\/prepbytes.com\/blog\/monopoly\/#primaryimage"},"thumbnailUrl":"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1645180200604-Article_416.png","datePublished":"2020-07-29T07:34:59+00:00","dateModified":"2022-03-30T13:25:24+00:00","description":"You Have to Think About Your Opponent's Move Means Options Available for the Your Opponent Once You Are Done With the Move, What Your Opponent Will Pick.","breadcrumb":{"@id":"https:\/\/prepbytes.com\/blog\/monopoly\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/prepbytes.com\/blog\/monopoly\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/prepbytes.com\/blog\/monopoly\/#primaryimage","url":"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1645180200604-Article_416.png","contentUrl":"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1645180200604-Article_416.png"},{"@type":"BreadcrumbList","@id":"https:\/\/prepbytes.com\/blog\/monopoly\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"http:\/\/43.205.93.38\/"},{"@type":"ListItem","position":2,"name":"Recursion Interview Programming","item":"https:\/\/prepbytes.com\/blog\/category\/recursion-interview-programming\/"},{"@type":"ListItem","position":3,"name":"MONOPOLY"}]},{"@type":"WebSite","@id":"http:\/\/43.205.93.38\/#website","url":"http:\/\/43.205.93.38\/","name":"PrepBytes Blog","description":"ONE-STOP RESOURCE FOR EVERYTHING RELATED TO CODING","publisher":{"@id":"http:\/\/43.205.93.38\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"http:\/\/43.205.93.38\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"http:\/\/43.205.93.38\/#organization","name":"Prepbytes","url":"http:\/\/43.205.93.38\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"http:\/\/43.205.93.38\/#\/schema\/logo\/image\/","url":"https:\/\/blog.prepbytes.com\/wp-content\/uploads\/2025\/07\/uzxxllgloialmn9mhwfe.webp","contentUrl":"https:\/\/blog.prepbytes.com\/wp-content\/uploads\/2025\/07\/uzxxllgloialmn9mhwfe.webp","width":160,"height":160,"caption":"Prepbytes"},"image":{"@id":"http:\/\/43.205.93.38\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/prepbytes0211\/","https:\/\/www.instagram.com\/prepbytes\/","https:\/\/www.linkedin.com\/company\/prepbytes\/","https:\/\/www.youtube.com\/channel\/UC0xGnHDrjUM1pDEK2Ka5imA"]},{"@type":"Person","@id":"http:\/\/43.205.93.38\/#\/schema\/person\/3f7dc4ae851791d5947a7f99df363d5e","name":"Prepbytes","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"http:\/\/43.205.93.38\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/232042cd1a1ea0e982c96d2a2ec93fb70a8e864e00784491231e7bfe5a9e06b5?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/232042cd1a1ea0e982c96d2a2ec93fb70a8e864e00784491231e7bfe5a9e06b5?s=96&d=mm&r=g","caption":"Prepbytes"},"url":"https:\/\/prepbytes.com\/blog\/author\/gourav-jaincollegedekho-com\/"}]}},"_links":{"self":[{"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/posts\/2235","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/users\/52"}],"replies":[{"embeddable":true,"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/comments?post=2235"}],"version-history":[{"count":8,"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/posts\/2235\/revisions"}],"predecessor-version":[{"id":8364,"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/posts\/2235\/revisions\/8364"}],"wp:attachment":[{"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/media?parent=2235"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/categories?post=2235"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/tags?post=2235"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}