鍔ㄦ€佽鍒掞紙浜岋級涔嬫墦瀹跺姭鑸?/h1>

Posted IT娴锋磱

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了鍔ㄦ€佽鍒掞紙浜岋級涔嬫墦瀹跺姭鑸?/h1>

# 鍔ㄦ€佽鍒掞紙浜岋級涔嬫墦瀹跺姭鑸?/span>

鐩镐俊缁忚繃涓婁竴鏈熷潖铔嬪摜璇︾粏鐨勮瑙o紝灏忎紮浼翠滑瀵逛竴鑸殑鍔ㄦ€佽鍒掑凡缁忔湁浜嗗垵姝ョ殑璁よ瘑锛岃寰楁垜鍒氭帴瑙﹀姩鎬佽鍒掔殑鏃跺€欙紝涓€鐩撮兘闂嚜宸变竴涓棶棰橈紝涓轰粈涔堣繖绫荤畻娉曞彨鍔ㄦ€佽鍒掑憿锛熸湁浠€涔堝惈涔?鐩镐俊鐖辨€濊€冪殑灏忎紮浼翠滑涔熸湁杩欎釜鐤戦棶锛屾垜鐨勭瓟妗堟槸璁╅€掑綊鏈夎蹇嗭紝鏍规嵁浠ュ線鐨勮蹇嗗姩鎬佽鍒掍笅涓€姝ャ€傚鏋滀綘鏈夋洿濂界殑瑙i噴锛岃寰楀悗鍙拌仈绯诲潖铔嬪摜鍝︺€傚鏋滀綘涔熷枩娆㈠潖铔嬪摜鐨勫唴瀹癸紝璁板緱鍏虫敞鍔狆煈嶅摝銆?/span>



棰樼洰鍐呭

鍘熼鑾峰彇閾炬帴锛?/span>https://leetcode-cn.com/problems/house-robber-iii/

鍔ㄦ€佽鍒掞紙浜岋級涔嬫墦瀹跺姭鑸?></p> 
<p cid=

鏄笉鏄劅瑙夌幇鍦ㄥ皬鍋风殑鏅哄晢閮借繖涔堢殑楂橈紝杩樻槸涓€涓绠楁満涓撳锛堟槸浣犲悧锛熷搱鍝堬級銆?/span>

灏忓伔锛氬挶浠繖鑱屼笟涓嶆槸璋佹兂褰撳氨鑳藉綋鐨勶紝鍜变滑鏄笓涓氱殑銆?/span>


棰樿В鎬濇兂

杩欐槸鎴戣窇鍑烘潵鐨勬晥鏋滐細鏈熷緟灏忎紮浼寸殑瓒呰秺鍝︼紙鏈夌偣椋樹簡锛夈€?/span>


鎬濇兂杩樻槸鐢ㄧ殑鍓嶉潰鎵撳鍔垗涓€鍜屼簩鐨勬€濇兂锛堝姩鎬佽鍒掞級


鍙槸鎶婅緟鍔╂暟缁勶紝鎹㈡垚浜嗘爲鑺傜偣涓殑val鍙橀噺锛岀敋鑷宠繍琛屽唴瀛樺彲浠ラ€氳繃杩唬鍚庡簭閬嶅巻鐨勬€濇兂杩樿兘鍑忓皯閮ㄥ垎鐨勬秷鑰椼€?/span>


鏈€鍚庣殑鏃堕棿澶嶆潅搴︿负 O(n)锛岀┖闂村鏉傚害涓篛(1)锛岃繖鍎垮叾瀹炲彲浠ヤ笉鏀瑰彉val鍙橀噺鐨勫€硷紝鏈変綑鍔涚殑灏忎紮浼村彲浠ユ€濊€冧竴涓嬨€?/span>


棰樿В涓昏鐨勬€濇兂杩樻槸鍔ㄦ€佽鍒掔殑閫夊拰涓嶉€?/span>锛?/span>

濡傛灉閫変簡i鑺傜偣锛岄偅涔坕鐨勫瓙鑺傜偣灏变笉鑳介€夛紝鏈€澶氳繕鑳介€塱瀛愯妭鐐圭殑瀛愯妭鐐瑰強瀹冧滑鐨勫瀛愩€傞偅涔堝氨鍙互鍦ㄩ€変簡i鐨勬儏鍐典笅鐨勬渶澶у€煎拰娌℃湁閫塱鐨勬儏鍐典笅鐨勬渶澶у€艰繘琛屾瘮杈冿紝璋佸ぇ锛屽氨璇存槑杩欎釜鏍戠殑鏈€澶у伔鍙栫殑money涓哄灏戙€?/span>


杞Щ鏂圭▼锛堝亣璁惧乏鑺傜偣锛屽彸缁撶偣鍙婁粬浠殑瀛╁瓙閮藉瓨鍦級涓猴細

dp[i]=max(f(i)+dp[i->l->l]+dp[i->l->r]+dp[i->r->l]+dp[i->r->r],dp[i->l]+dp[i->r])


绗﹀彿瀹氫箟瑙i噴锛?/span>

1锔忊儯dp[i]琛ㄧず浠涓烘牴缁撶偣鐨勫瓙鏍戠殑鏈€澶у伔鍙栫殑money銆?/span>

2锔忊儯dip[i->l->l] 濡傛灉i鐨勫乏鑺傜偣鐨勫乏鑺傜偣瀛樺湪锛岄偅涔堜互i宸﹁妭鐐圭殑宸﹁妭鐐逛负鏍圭殑瀛愭爲鎵€鑳藉伔鍙栫殑鏈€澶у€硷紝鍚岀悊鍏朵粬绗﹀彿绫讳技銆?/span>

3锔忊儯f(i) 琛ㄧずi鑺傜偣涓殑val鍙橀噺鐨勫ぇ灏忋€?/span>


鍥犱负鍔ㄦ€佽鍒掕閫夋嫨璁$畻鐨勬柟鍚戯紝濡傛灉浠庢牴寰€涓嬮潰璁$畻锛岄偅涔堜細瀛樺湪寰堝lamp sub-problem锛岃繖姝f槸鍔ㄦ€佽鍒掓墍瑕佽В鍐崇殑闂锛?/span>鎵€浠ユ垜浠氨瑕佹€濊€冨浣曚粠鏍瑰線涓婄畻锛岄偅涔堝湪鏍戠殑閬嶅巻涓紝鍚庡簭閬嶅巻鎭板ソ鍙互婊¤冻鍦ㄧ畻鏍圭殑鏃跺€欙紝瀛愭爲宸茬粡绠楀ソ浜嗐€?/span>


鍏蜂綋瀹炵幇浠g爜:

/**

* Definition for a binary tree node.

* public class TreeNode {

* int val;

* TreeNode left;

* TreeNode right;

* TreeNode(int x) { val = x; }

* }
  */
  class Solution {
      public int rob(TreeNode root) {
      //鍒ゆ柇鏄惁涓簄ull
      if(root!=null)
      {
          if (root.left!=null) {
              rob(root.left);
          }
          if (root.right!=null){
              rob(root.right);
          }
          //鐒跺悗璁$畻璇ョ粨鐐圭殑鏈€澶у€硷紝鍓嶆彁鏄笂闈㈢殑宸﹀彸缁撶偣宸茬粡璁$畻
          coculate(root);
          return root.val;
      }else {
          return 0;
      }

  }

  public void coculate(TreeNode node){
      //瀹氫箟涓や釜鍙橀噺
      int choice=0;    //閫塶ode
      int nochoice=0;  //涓嶉€塶ode
     
      //鐗瑰垽
      if (node==null)
          return;
      else
          choice=node.val;
     
      //璁$畻node鐨勫乏瀛愭爲
      if (node.left!=null){
          nochoice+=node.left.val;
          if (node.left.left!=null){
              choice+=node.left.left.val;
          }
          if (node.left.right!=null){
              choice+=node.left.right.val;
          }
      }

      //璁$畻node鐨勫彸瀛愭爲
      if (node.right!=null){
          nochoice+=node.right.val;
          if (node.right.left!=null){
              choice+=node.right.left.val;
          }
          if (node.right.right!=null){
              choice+=node.right.right.val;
          }
      }
     
      //杩斿洖閫変笉閫塶ode鐨勫悇鑷儏鍐典笅鏈€澶х殑money
    node.val=choice>nochoice?choice:nochoice;

    }
  }
 

鎬荤粨

缁忚繃杩欎竴鏈熷唴瀹圭殑鍒嗕韩锛岀浉淇″皬浼欎即浠凡缁忓鍔ㄦ€佽鍒掓湁浜嗕竴涓瘮杈冪洿瑙傜殑鎰熷彈浜嗐€傛棤璁烘槸闈㈣瘯杩樻槸鑰冪爺鑰冨彇濂界殑瀛︽牎锛岀浉淇$畻娉曠殑鐔熺〝鑳借浣犱滑鏇村姞鍑哄僵鍑轰紬銆傛湡寰呬綘浠殑杩涙銆?/span>


姘歌繙鍋氱埍瀛︿範鐨勫皬鐧姐€傛垜鏄潖铔嬪摜锛屽挶浠笅鏈熷啀浼氥€?/span>



以上是关于鍔ㄦ€佽鍒掞紙浜岋級涔嬫墦瀹跺姭鑸?/h1>

绠楁硶鍔ㄦ€佽鍒掞紙浜旓級-鑳屽寘闂2

绠楁硶-鍔ㄦ€佽鍒掞紙鍥涳級

绠楁硶-鍔ㄦ€佽鍒掞紙涓夛級

绠楁硶鍔ㄦ€佽鍒掞紙涓冿級-鑳屽寘闂4

Scratch涓棿鎺ュ疄鐜板缁存暟缁勬敮鎸侊紙浜岋級

html+css-姘村钩灞呬腑-涓嶅畾娆惧潡鐘跺厓绱犳柟娉曪紙浜岋級