{"id":2247,"date":"2020-07-29T07:34:49","date_gmt":"2020-07-29T07:34:49","guid":{"rendered":"https:\/\/blog.prepbytes.com\/?p=2247"},"modified":"2022-03-31T12:29:26","modified_gmt":"2022-03-31T12:29:26","slug":"monopoly-once-again","status":"publish","type":"post","link":"https:\/\/prepbytes.com\/blog\/monopoly-once-again\/","title":{"rendered":"MONOPOLY ONCE AGAIN"},"content":{"rendered":"<p><img decoding=\"async\" src=\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1645180244005-Article_418.png\" alt=\"\" \/><\/p>\n<h3>CONCEPTS USED:<\/h3>\n<blockquote>\n<p>Dynamic programming<\/p>\n<\/blockquote>\n<h3>DIFFICULTY LEVEL:<\/h3>\n<blockquote>\n<p>Medium.<\/p>\n<\/blockquote>\n<h3>PROBLEM STATEMENT<code>(<\/code>SIMPLIFIED<code>)<\/code>:<\/h3>\n<blockquote>\n<p>After having lost to you again, your friend challenges you yet again for another round of Monopoly.<br \/>\nThis time, he changes the rules of the game slightly, hoping that this would throw you off your game and he would finally have his sweet revenge. Your task is to play optimally and win this, again!<br \/>\nThe updated rules are as follows :Consider a row of<br \/>\nN notes of values V1,V2&#8230;Vn, where N is even. We play a game against an opponent by alternating turns.  In each turn, a player performs this operation K times: select either the first or last coin from the row, removes it from the row permanently, and receives the value of the coin.<br \/>\nDetermine the maximum possible amount of money we can definitely win if we move first.<\/p>\n<\/blockquote>\n<h4>For Example :<\/h4>\n<pre><code>5 2\n2 7 9 4 4\n\nIn the first step, you take 2 and 7\nOpponent takes 9 and 4. \nYou take 4 at the end.\nSo total= 13. <\/code><\/pre>\n<h3>SOLVING APPROACH:<\/h3>\n<blockquote>\n<p>Let&#8217;s define a function f(st,end) where st is the starting index and end is the ending index available for the player to select coins.<\/p>\n<p>Now try to understand that from the given i and j(starting and ending index) we can easily figure out whose turn it is.<\/p>\n<pre><code>sz=j-i+1;\ndiff=n-sz;\ndiff=diff\/k;<\/code><\/pre>\n<p>Now ,if diff%2=0,it&#8217;s the turn of first player,else second player plays.<\/p>\n<p>Base case-<\/p>\n<p>if sz i.e. the available range is less than k,then add all the elements in the array.<\/p>\n<p>We have the maximise the sum if it&#8217;s the turn of first player and minimise if the it&#8217;s the turn of second player.<\/p>\n<\/blockquote>\n<h4>You are encouraged to implement the above brute force and think of memoization on your own first ,before looking at the solution.<\/h4>\n<p><a href=\"https:\/\/mycode.prepbytes.com\/problems\/dynamic-programming\/MONOPOLY3\" title=\"Go to mycode.prepbytes.com\" target=\"_blank\" rel=\"noopener noreferrer\"><u><strong><\/strong><\/u><\/a><\/p>\n<blockquote>\n<p>The above brute force gives exponential time complexity as several subproblems will be computed repetitively. To overcome this,we use <strong>memoization<\/strong> technique.<\/p>\n<\/blockquote>\n<p><strong>Refer to the code below:<\/strong><br \/>\n\t\t\t\t\t\t<style>\r\n\t\t\t\t\r\n\t\t\t\t\t#tab_container_2248 {\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_2248 .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_2248 .wpsm_nav-tabs {\r\n    border-bottom: 0px solid #ddd;\r\n}\r\n#tab_container_2248 .wpsm_nav-tabs > li.active > a, #tab_container_2248 .wpsm_nav-tabs > li.active > a:hover, #tab_container_2248 .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_2248 .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_2248 .wpsm_nav-tabs > li > a:focus {\r\noutline: 0px !important;\r\n}\r\n\r\n#tab_container_2248 .wpsm_nav-tabs > li > a:before {\r\n\tdisplay:none !important;\r\n}\r\n#tab_container_2248 .wpsm_nav-tabs > li > a:after {\r\n\tdisplay:none !important ;\r\n}\r\n#tab_container_2248 .wpsm_nav-tabs > li{\r\npadding:0px !important ;\r\nmargin:0px;\r\n}\r\n\r\n#tab_container_2248 .wpsm_nav-tabs > li > a:hover , #tab_container_2248 .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_2248 .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_2248 .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_2248 .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_2248 .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_2248 .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_2248 .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_2248 .wpsm_nav-tabs > li {\r\n\t\t\t\t\r\n\t}\r\n\t#tab_container_2248 .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_2248 .wpsm_nav-tabs > li {\r\n\t\t\t\t\r\n\t}\r\n\t#tab_container_2248 .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_2248 .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_2248\" >\r\n\t \r\n\t\t\t\t\t<ul class=\"wpsm_nav wpsm_nav-tabs\" role=\"tablist\" id=\"myTab_2248\">\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_2248_1\" aria-controls=\"tabs_desc_2248_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_2248_2\" aria-controls=\"tabs_desc_2248_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_2248_3\" aria-controls=\"tabs_desc_2248_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\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_2248\">\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_2248_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 &lt;stdio.h&gt;\r\n\r\n     #define ll long long\r\n\r\n    ll dp[101][101];\r\n    ll arr[101];\r\n    int n,k;\r\n    ll max(ll x,ll y)\r\n    {\r\n    if(x&gt;y)return x;return y;\r\n    }\r\n     ll min(ll x,ll y)\r\n    {\r\n    if(x&lt;y)return x;\r\n    return y;\r\n     }\r\n\r\n    ll solve(int st,int end){\r\n\r\n    if(dp[st][end]!=-1)\r\n        return dp[st][end];\r\n\r\n    ll sz=(end-st+1);\r\n    ll diff=n-sz;\r\n\r\n    diff=(diff)\/k;\r\n    \/\/cout&lt;&lt;st&lt;&lt;&quot; &quot;&lt;&lt;end&lt;&lt;endl;\r\n\r\n    if(diff%2==0){\r\n        if(sz&lt;=k){\r\n\r\n            ll sum=0;\r\n            for(int i=st;i&lt;=end;i++){\r\n                sum+=arr[i];\r\n            }\r\n            return dp[st][end]=sum;\r\n        }\r\n        else{\r\n            ll val1=-1;\r\n\r\n            for(int i=0;i&lt;=k;i++){\r\n                int cnt1=i,cnt2=k-i;\r\n                int st1=st,end1=end;\r\n                ll sum=0;\r\n                while(cnt1){\r\n                    sum+=arr[st1];\r\n                    st1++;\r\n                    --cnt1;\r\n                }\r\n                while(cnt2){\r\n                    sum+=arr[end1];\r\n                    --end1;\r\n                    --cnt2;\r\n                }\r\n                val1=max(val1,sum+solve(st1,end1));\r\n            }\r\n            return dp[st][end]=val1;\r\n        }\r\n\r\n    }\r\n    else{\r\n        if(sz&lt;=k){\r\n            return dp[st][end]=0;\r\n        }\r\n        else{\r\n            ll val2=1000000000000000000;\r\n            for(int i=0;i&lt;=k;i++){\r\n                int j=k-i;\r\n                val2=min(val2,solve(st+i,(end-j)));\r\n            }\r\n            return dp[st][end]=val2;\r\n        }\r\n    }\r\n    }\r\n\r\n    int main(){\r\n\r\n    scanf(&quot;%d%d&quot;,&amp;n,&amp;k);\r\n\r\n    memset(dp,-1,sizeof(dp));\r\n\r\n    for(int i=0;i&lt;n;i++){\r\n        scanf(&quot;%lld&quot;,&amp;arr[i]);\r\n    }\r\n\r\n    printf(&quot;%lld&quot;,solve(0,n-1));\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_2248_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&lt;bits\/stdc++.h&gt;\r\n     using namespace std;\r\n\r\n     #define ll long long\r\n\r\n    ll dp[101][101];\r\n    ll arr[101];\r\n    int n,k;\r\n\r\n    ll solve(int st,int end){\r\n\r\n    if(dp[st][end]!=-1)\r\n        return dp[st][end];\r\n\r\n    ll sz=(end-st+1);\r\n    ll diff=n-sz;\r\n\r\n    diff=(diff)\/k;\r\n    \/\/cout&lt;&lt;st&lt;&lt;&quot; &quot;&lt;&lt;end&lt;&lt;endl;\r\n\r\n    if(diff%2==0){\r\n        if(sz&lt;=k){\r\n\r\n            ll sum=0;\r\n            for(int i=st;i&lt;=end;i++){\r\n                sum+=arr[i];\r\n            }\r\n            return dp[st][end]=sum;\r\n        }\r\n        else{\r\n            ll val1=INT_MIN;\r\n\r\n            for(int i=0;i&lt;=k;i++){\r\n                int cnt1=i,cnt2=k-i;\r\n                int st1=st,end1=end;\r\n                ll sum=0;\r\n                while(cnt1){\r\n                    sum+=arr[st1];\r\n                    st1++;\r\n                    --cnt1;\r\n                }\r\n                while(cnt2){\r\n                    sum+=arr[end1];\r\n                    --end1;\r\n                    --cnt2;\r\n                }\r\n                val1=max(val1,sum+solve(st1,end1));\r\n            }\r\n            return dp[st][end]=val1;\r\n        }\r\n\r\n    }\r\n    else{\r\n        if(sz&lt;=k){\r\n            return dp[st][end]=0;\r\n        }\r\n        else{\r\n            ll val2=INT_MAX;\r\n            for(int i=0;i&lt;=k;i++){\r\n                int j=k-i;\r\n                val2=min(val2,solve(st+i,(end-j)));\r\n            }\r\n            return dp[st][end]=val2;\r\n        }\r\n    }\r\n    }\r\n\r\n    int main(){\r\n\r\n    cin&gt;&gt;n&gt;&gt;k;\r\n\r\n    memset(dp,-1,sizeof(dp));\r\n\r\n    for(int i=0;i&lt;n;i++){\r\n        cin&gt;&gt;arr[i];\r\n    }\r\n\r\n    cout&lt;&lt;solve(0,n-1);\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_2248_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\nimport java.util.*;\r\n\r\n     class solution{\r\n\r\n     static int n, k;\r\n\r\n    public static void main (String[] args) {\r\n        Scanner sc=new Scanner(System.in);\r\n\r\n        long dp[][]=new long[101][101];\r\n        long arr[]=new long[101];\r\n\r\n             n=sc.nextInt();\r\n             k=sc.nextInt();\r\n\r\n            for(int i=0;i&lt;n;i++)\r\n            arr[i]=sc.nextLong();\r\n\r\n              for(int i=0;i&lt;dp.length;i++){\r\n              for(int j=0;j&lt;dp[0].length;j++){\r\n              dp[i][j]=-1;\r\n              }\r\n              }\r\n\r\n            System.out.println(solve(0,n-1,arr,dp));\r\n       }\r\n\r\n     static long solve(int st,int end,long arr[],long dp[][])\r\n     {\r\n    if(dp[st][end]!=-1) \r\n    return dp[st][end];\r\n    long sz=(end-st+1);\r\n    long diff=n-sz;\r\n    diff=(diff)\/k;  \/\/cout&lt;&lt;st&lt;&lt;&quot; &quot;&lt;&lt;end&lt;&lt;endl;\r\n    if(diff%2==0){  \r\n        if(sz&lt;=k){\r\n            long sum=0;\r\n            for(int i=st;i&lt;=end;i++){       \r\n                sum+=arr[i];\r\n                }           \r\n                return dp[st][end]=sum; \r\n                }       \r\n                else{           \r\n                    long val1=Integer.MIN_VALUE;                        \r\n                    for(int i=0;i&lt;=k;i++){      \r\n                        int cnt1=i,cnt2=k-i;\r\n                        int st1=st,end1=end;\r\n                        long sum=0;         \r\n                        while(cnt1&gt;0){\r\n                            sum+=arr[st1];\r\n                            st1++;\r\n                            --cnt1;\r\n                            }\r\n                            while(cnt2&gt;0){\r\n                                sum+=arr[end1];\r\n                                --end1;     \r\n                                --cnt2;\r\n                                }\r\n                                val1=Math.max(val1,sum+solve(st1,end1,arr,dp)); \r\n                                }           \r\n                                return dp[st][end]=val1;\r\n                                }   \r\n                                }   \r\n                                else{   \r\n                                    if(sz&lt;=k){\r\n                                        return dp[st][end]=0;\r\n                                        }       \r\n                                        else{       \r\n                                            long val2=Integer.MAX_VALUE;\r\n                                            for(int i=0;i&lt;=k;i++){          \r\n                                           int j=k-i;   \r\n                                        val2=Math.min(val2,solve(st+i,(end-j),arr,dp));\r\n                                     }      \r\n                                 return dp[st][end]=val2;   \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\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_2248 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_2248 a\"),jQuery(\"#tab-content_2248\"));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<strong>Space complexity<\/strong>: O(n*n)<\/p>\n<p>[forminator_quiz id=&quot;2249&quot;]<\/p>\n<p>This article tried to discuss the concept of <strong>Dynamic programming<\/strong>. Hope this blog helps you understand and solve the problem. To practice more problems on Dynamic programming you can check out <a href=\"#\"><\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>CONCEPTS USED: Dynamic programming DIFFICULTY LEVEL: Medium. PROBLEM STATEMENT(SIMPLIFIED): After having lost to you again, your friend challenges you yet again for another round of Monopoly. This time, he changes the rules of the game slightly, hoping that this would throw you off your game and he would finally have his sweet revenge. Your task [&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":[126],"tags":[],"class_list":["post-2247","post","type-post","status-publish","format-standard","hentry","category-dynamic-programming"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.8 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Dynamic Programming | Monopoly Once Again | Prepbytes<\/title>\n<meta name=\"description\" content=\"Let&#039;s Define a Function F(st,end) Where St Is the Starting Index and End Is the Ending Index Available for the Player to Select Coins.now Try to Understand That from I and j\" \/>\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-once-again\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Dynamic Programming | Monopoly Once Again | Prepbytes\" \/>\n<meta property=\"og:description\" content=\"Let&#039;s Define a Function F(st,end) Where St Is the Starting Index and End Is the Ending Index Available for the Player to Select Coins.now Try to Understand That from I and j\" \/>\n<meta property=\"og:url\" content=\"https:\/\/prepbytes.com\/blog\/monopoly-once-again\/\" \/>\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:49+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-03-31T12:29:26+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1645180244005-Article_418.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=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/prepbytes.com\/blog\/monopoly-once-again\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/prepbytes.com\/blog\/monopoly-once-again\/\"},\"author\":{\"name\":\"Prepbytes\",\"@id\":\"http:\/\/43.205.93.38\/#\/schema\/person\/3f7dc4ae851791d5947a7f99df363d5e\"},\"headline\":\"MONOPOLY ONCE AGAIN\",\"datePublished\":\"2020-07-29T07:34:49+00:00\",\"dateModified\":\"2022-03-31T12:29:26+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/prepbytes.com\/blog\/monopoly-once-again\/\"},\"wordCount\":353,\"commentCount\":0,\"publisher\":{\"@id\":\"http:\/\/43.205.93.38\/#organization\"},\"image\":{\"@id\":\"https:\/\/prepbytes.com\/blog\/monopoly-once-again\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1645180244005-Article_418.png\",\"articleSection\":[\"Dynamic programming\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/prepbytes.com\/blog\/monopoly-once-again\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/prepbytes.com\/blog\/monopoly-once-again\/\",\"url\":\"https:\/\/prepbytes.com\/blog\/monopoly-once-again\/\",\"name\":\"Dynamic Programming | Monopoly Once Again | Prepbytes\",\"isPartOf\":{\"@id\":\"http:\/\/43.205.93.38\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/prepbytes.com\/blog\/monopoly-once-again\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/prepbytes.com\/blog\/monopoly-once-again\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1645180244005-Article_418.png\",\"datePublished\":\"2020-07-29T07:34:49+00:00\",\"dateModified\":\"2022-03-31T12:29:26+00:00\",\"description\":\"Let's Define a Function F(st,end) Where St Is the Starting Index and End Is the Ending Index Available for the Player to Select Coins.now Try to Understand That from I and j\",\"breadcrumb\":{\"@id\":\"https:\/\/prepbytes.com\/blog\/monopoly-once-again\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/prepbytes.com\/blog\/monopoly-once-again\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/prepbytes.com\/blog\/monopoly-once-again\/#primaryimage\",\"url\":\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1645180244005-Article_418.png\",\"contentUrl\":\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1645180244005-Article_418.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/prepbytes.com\/blog\/monopoly-once-again\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"http:\/\/43.205.93.38\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Dynamic programming\",\"item\":\"https:\/\/prepbytes.com\/blog\/category\/dynamic-programming\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"MONOPOLY ONCE AGAIN\"}]},{\"@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":"Dynamic Programming | Monopoly Once Again | Prepbytes","description":"Let's Define a Function F(st,end) Where St Is the Starting Index and End Is the Ending Index Available for the Player to Select Coins.now Try to Understand That from I and j","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-once-again\/","og_locale":"en_US","og_type":"article","og_title":"Dynamic Programming | Monopoly Once Again | Prepbytes","og_description":"Let's Define a Function F(st,end) Where St Is the Starting Index and End Is the Ending Index Available for the Player to Select Coins.now Try to Understand That from I and j","og_url":"https:\/\/prepbytes.com\/blog\/monopoly-once-again\/","og_site_name":"PrepBytes Blog","article_publisher":"https:\/\/www.facebook.com\/prepbytes0211\/","article_published_time":"2020-07-29T07:34:49+00:00","article_modified_time":"2022-03-31T12:29:26+00:00","og_image":[{"url":"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1645180244005-Article_418.png","type":"","width":"","height":""}],"author":"Prepbytes","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Prepbytes","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/prepbytes.com\/blog\/monopoly-once-again\/#article","isPartOf":{"@id":"https:\/\/prepbytes.com\/blog\/monopoly-once-again\/"},"author":{"name":"Prepbytes","@id":"http:\/\/43.205.93.38\/#\/schema\/person\/3f7dc4ae851791d5947a7f99df363d5e"},"headline":"MONOPOLY ONCE AGAIN","datePublished":"2020-07-29T07:34:49+00:00","dateModified":"2022-03-31T12:29:26+00:00","mainEntityOfPage":{"@id":"https:\/\/prepbytes.com\/blog\/monopoly-once-again\/"},"wordCount":353,"commentCount":0,"publisher":{"@id":"http:\/\/43.205.93.38\/#organization"},"image":{"@id":"https:\/\/prepbytes.com\/blog\/monopoly-once-again\/#primaryimage"},"thumbnailUrl":"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1645180244005-Article_418.png","articleSection":["Dynamic programming"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/prepbytes.com\/blog\/monopoly-once-again\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/prepbytes.com\/blog\/monopoly-once-again\/","url":"https:\/\/prepbytes.com\/blog\/monopoly-once-again\/","name":"Dynamic Programming | Monopoly Once Again | Prepbytes","isPartOf":{"@id":"http:\/\/43.205.93.38\/#website"},"primaryImageOfPage":{"@id":"https:\/\/prepbytes.com\/blog\/monopoly-once-again\/#primaryimage"},"image":{"@id":"https:\/\/prepbytes.com\/blog\/monopoly-once-again\/#primaryimage"},"thumbnailUrl":"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1645180244005-Article_418.png","datePublished":"2020-07-29T07:34:49+00:00","dateModified":"2022-03-31T12:29:26+00:00","description":"Let's Define a Function F(st,end) Where St Is the Starting Index and End Is the Ending Index Available for the Player to Select Coins.now Try to Understand That from I and j","breadcrumb":{"@id":"https:\/\/prepbytes.com\/blog\/monopoly-once-again\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/prepbytes.com\/blog\/monopoly-once-again\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/prepbytes.com\/blog\/monopoly-once-again\/#primaryimage","url":"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1645180244005-Article_418.png","contentUrl":"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1645180244005-Article_418.png"},{"@type":"BreadcrumbList","@id":"https:\/\/prepbytes.com\/blog\/monopoly-once-again\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"http:\/\/43.205.93.38\/"},{"@type":"ListItem","position":2,"name":"Dynamic programming","item":"https:\/\/prepbytes.com\/blog\/category\/dynamic-programming\/"},{"@type":"ListItem","position":3,"name":"MONOPOLY ONCE AGAIN"}]},{"@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\/2247","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=2247"}],"version-history":[{"count":8,"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/posts\/2247\/revisions"}],"predecessor-version":[{"id":8429,"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/posts\/2247\/revisions\/8429"}],"wp:attachment":[{"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/media?parent=2247"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/categories?post=2247"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/tags?post=2247"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}