PHP 輸入兩個整數n 和m,從數列1,2,3…….n 中隨意取幾個數, 使其和等於m ,要求將其中所有的可能組合列出來

1 <?php 2 #輸入sum和n,要求輸出1,2...n裡所有和為sum的組合 3 #這是一個可劃分子問題問題 4 #若用f(sum, n)表示問題的界,則元素組合共有兩種情況 5 #1. 和為sum的組合裡包括n,則f(sum, n) = f(sum - n, n - 1) 6 #2. 和為sum的組合裡不包括n,則 f(sum, n) = f(sum, n - 1) 7 #所以 f(sum, n) = f(sum - n, n - 1

PHP 尋找鏈表倒數第i個節點

1 <?php 2 #尋找鏈表倒數第i個節點,倒數第0個為最後一個節點 3 class Node { 4 public $data = null; 5 public $next = null; 6 } 7 8 #第一種方法,先算出鏈表總長,然後向後尋找n-i個節點 9 function last_i($head, $i) {10 $cnode = $head;11 $n = 0;12

PHP 計算二叉樹距離最長的兩個節點間的距離

1 <?php 2 #尋找二叉樹距離最長的兩個節點的距離,即相距邊數最多的兩個節點的邊數 3 #解題思路:距離最長的兩個節點有以下3中情況 4 #1.兩個節點一個位於左子樹,一個位於右子樹,則最長距離是左右子樹的深度相加 5 #2.兩個節點都位於左子樹,則最長距離是以左子樹為根節點的左子樹的兩個左右子樹的深度相加 6 #3.兩個節點都位於右子樹,則最長距離是以右子樹為根節點的右子樹的兩個左右子樹的深度相加 7 8 class Node {

PHP 字串匹配演算法 Sunday演算法

搜尋文本 text = "my testing algorithm in test"模式 pattern = "test"Sunday演算法的關鍵點在於1.設定一個匹配位移映射 shift[],這個shift[]映射關係必須按從左至右的順序簡曆,例如pattern = "test",注意到此處有2個t,那麼建立出來的位移映射是 shift[] = Array ( [t] => 1 [e] => 3 [s] => 2 ),而如果不是從左至右,是從右至左的建立映射,就會變成

PHP 將數群組轉換為完全二叉樹

1 <?php 2 class Node { 3 public $data = null; 4 public $parent = null; 5 public $left = null; 6 public $right = null; 7 } 8 9 #使用數組構造完全二叉樹10 function build_cbtree($a) {11 $root = new Node();

PHP Catalan數的幾個應用

1 <?php 2 #給定入棧序列,求出棧序列組合總數 3 #這是一個catalan數問題 4 #設共有n個數入棧,將入棧序列和出棧序列寫在一起共有2n個數 5 #將第一個入棧的數作為基點,則第一個數肯定是在第2i+1的位置出棧 6 #否則第一個數入棧編號是0,如果是在2i,則在第一個數入棧和出棧之間共有2i-1個數,是奇數 7 #既然是奇數,則說明有數在第一個數出棧之前入棧卻沒有出棧,矛盾 8 #那麼,我們可以找到地推規律,設f(2

PHP 淺析PHP記憶體回收機制對記憶體泄露的處理

上次說到了refcount和is_ref,這裡來說說記憶體泄露的情況$a = array(1, 2, &$a);unset($a);在老的PHP版本中,這裡就會出現記憶體泄露,分析如下:執行第一行,可以知道$a和$a[2]指向的zval

PHP 逆轉單鏈表

1 <?php 2 #逆轉單鏈表 3 class Node { 4 public $data = null; 5 public $next = null; 6 } 7 8 #遞迴版本 9 #思想是一直遞迴到倒數第二個非空節點,並將其next->next指向自己,將自己的next指向null10 #為了獲得逆轉後的頭結點,在最後一個非空節點,即cnode->next == null時,將節點返回11

PHP 輸入兩個整數序列。其中一個序列表示棧的push 順序, 判斷另一個序列有沒有可能是對應的pop 順序

<?php #輸入一個棧的壓棧序列和一個彈棧序列,判斷該彈棧序列是否可能是壓棧序列的輸出 #例如壓棧序列 12345,則彈棧序列可以是 54321 或者 45321 #解題思路,建一個空棧,按照壓棧序列入棧,當壓入的棧頂元素與彈棧序列的指標指向元素相同時,將元素彈出 #直到將壓棧序列的元素全部壓完,如果彈棧序列是正確的,則最後棧內元素可以按照彈棧序列順序彈出,最後棧為空白 #否則棧不為空白 function test($push, $pop) {

PHP 串聯珠子問題

1 <?php 2 #串聯珠子問題(類似於關鍵字搜尋) 3 4 function shortest_sub($a, $m) { 5 $color = array(); #用於儲存當前子串某種顏色出現的次數,如color[0] = 2表示顏色0出現2次 6 $sum = 0; #用於儲存當前子串共出現了幾種顏色 7 $bstart = 0; #最短字串的開始座標 8 $blen = count($a);

PHP 平分數組

1 <?php 2 /** 3 *一個整數數組,長度為n,將其分為m 份,使各份的和相等,求m 的最大值 4 *比如{3,2,4,3,6} 可以分成{3,2,4,3,6} m=1; 5 *{3,6}{2,4,3} m=2 6 *{3,3}{2,4}{6} m=3 所以m 的最大值為3 7 **/ 8 9 #解題思路10 #首先m必須滿足兩個條件11 #1. 1<=m<=n12 #2. sum(a)

PHP 淺析PHP的引用計數機制

PHP的變數聲明並賦值後,變數名存在符號表中,而值和類資訊存在zval中,zval中包含四個變數,is_ref,refcount,value,type,zval源碼如下struct _zval_struct { /* Variable information */ zvalue_value value; /* value */ zend_uint refcount__gc; zend_uchar type; /* active type */

PHP 使用二叉樹的先序和中序遍曆結果構造二叉樹

1 <?php 2 #樹節點 3 class Node { 4 public $data = null; 5 public $parent = null; 6 public $left = null; 7 public $right = null; 8 } 9 10 #根據先序和中序遍曆數組建立二叉樹,注意是二叉樹,不是二叉排序樹,而且條件是樹沒有相同的值11 12

PHP 不用求1+2+…+n,要求不能使用乘除法、for、while、if、else、switch、case等關鍵字以及條件判斷語句(A?B:C)

1 <?php 2 class Sum0 { 3 public function sum() { 4 return 0; 5 } 6 } 7 8 class Test { 9 private $a = array();10 11 public function __construct() {12 $this->a[0] =

PHP 逆轉字串與逆轉句子

1 <?php 2 #顛倒字串 3 4 #將字串從頭和尾向中間遍曆,交換位置 5 function cstrrev(&$str, $begin, $len) { 6 $i = $begin; 7 $j = $begin + $len - 1; 8 while ($i < $j) { 9 $temp = $str[$i];10 $str[$i] =

PHP 建立二叉樹鏡像(交換左右子樹)

1 <?php 2 #產生二叉樹鏡像(交換樹的所有左右節點) 3 4 class Node { 5 public $data = null; 6 public $parent = null; 7 public $left = null; 8 public $right = null; 9 }10 11 #遞迴方法12 function mirror_recursive($root) {

PHP 定義棧結構,實現min函數,擷取棧最小元素,要求時間複雜度為O(1)

1 <?php 2 #設計一個棧的資料結構,要求增加一個min函數,可以取出棧的最小元素 3 #要求push,pop,min的時間複雜度都是O(1) 4 #解題思路:在每個棧元素增加一個min變數,這個變數儲存次元素及其之前所有元素的最小值 5 6 #棧節點 7 class Node { 8 public $data = null; 9 public $min = null;10 }11 12

PHP 二叉樹非遞迴遍曆

1 <?php 2 #二叉樹的非遞迴遍曆 3 class Node { 4 public $data; 5 public $left; 6 public $right; 7 } 8 9 #前序走訪,和深度遍曆一樣10 function preorder($root) {11 $stack = array();12 array_push($stack, $root);13

PHP中static的使用

1 <html> 2 <body> 3 <!-- 在類中的使用 --> 4 <?php 5 class TestStatic { 6 public static $country = 'China'; //在類內static可以使用public修飾 7 8 public

PHP計算兩個路徑的相對路徑

1 <html> 2 <body> 3 <?php 4 function relativePath($aPath, $bPath) { 5 $aArr = explode('/', $aPath); //explode函數用於切分字串,返回切分後的數組,此處用'/'切分字串 6 $bArr = explode('/', $bPath); 7

總頁數: 1662 1 .... 433 434 435 436 437 .... 1662 Go to: 前往

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.