前兩天稍微有點閒,就去牛客網刷了幾道演算法題,之前演算法一直都是c語言寫的,然而這段時間都在學習php,c語言感覺有點力不從心,於是我就想到用php來程式設計。不編不知道,一編嚇一跳,學了這麼久的php,我竟然不知道php的標準輸入方式,之前都是web端表單傳至或者是ajax傳值得到資料,並沒有直接用php輸入資料。閒話就不多說了,下面走入正題
之前一直是整合wamp環境下寫網頁,也沒必要配置環境
將php.exe所在的目錄e:\wampserver\bin\php\php5.5.12存進環境變數path中
//標準輸入
$s = trim(fgets(stdin));
//標準輸出
fwrite(stdout, "請輸入乙個3-50位長度的字串: ");
標準輸入輸出的獲取很簡單,網上一搜一大堆,找到標準輸入輸出,我就信心滿滿的來開始我的程式設計之旅。
1.[程式設計題] 黑白卡片
時間限制:1秒
空間限制:32768k
牛牛有n張卡片排成乙個序列.每張卡片一面是黑色的,另一面是白色的。初始狀態的時候有些卡片是黑色朝上,有些卡片是白色朝上。牛牛現在想要把一些卡片翻過來,得到一種交替排列的形式,即每對相鄰卡片的顏色都是不一樣的。牛牛想知道最少需要翻轉多少張卡片可以變成交替排列的形式。
輸入描述:
輸入包括乙個字串s,字串長度length(3 ≤ length ≤ 50),其中只包含』w』和』b』兩種字串,分別表示白色和黑色。整個字串表示卡片序列的初始狀態。
輸出描述:
輸出乙個整數,表示牛牛最多需要翻轉的次數。
輸入例子:
bbbw
輸出例子:
1題目分析:由題意得,要得到交替排列形式,只有bwbwbw…或者wbwbwb…這兩種可能,得到這兩種形式串所需步數,然後取出最小值。或可算出一種即可,若大於總數的一半則用總數減去,因為得到兩種形式串的步數和為序列總數。可以通過比較前後兩個數,若相同,則變,變數值加1;不同則不變,變數值不變,最後獲得的序列由第乙個值決定,若是大於總數的一半則總數減去算出的步數。
題目的思路已經出來了,接下來就是實戰了,寫了輸入後
$len = strlen($s);
$arr = str_split($s);
通過str_split函式將字串存進arr陣列中,然後使用for迴圈將字元乙個乙個讀取然後比較
總的來說這個題想對來說,難點已經解決。下面是程式**
<?php
header("charset=utf-8");
// fwrite(stdout, "請輸入乙個3-50位長度的字串: ");
$s = trim(fgets(stdin));
$len = strlen($s);
if("^[wb]+$")
}else}}
if($j*2>$len)
echo $j;
return $j;
}else
?>
這兩行注釋是由於牛客網答題系統不支援,還有更多的程式設計題會在後邊續寫。 php 的 cli 執行模式
php cli是php command line inte ce的簡稱 就是php在命令列執行的介面,區別於在web伺服器上執行的php環境 php cgi,isapi等 也就是說,php不單可以寫前台網頁,它還可以用來寫後台的程式。php的cli shell指令碼適用於所有的php優勢,使建立要麼...
php命令列模式 cli 的使用 總結
hp cli模式的優勢及使用場合 1.完全支援多執行緒 php本身是單執行緒指令碼語言 php cli是php多執行緒應用,雖然大家都普遍認為php沒有多執行緒 curl屬於模擬多執行緒而不是真實的 但是在php cli模式下的php徹底的是屬於多執行緒。這個時候php屬於linux的乙個守護程序 ...
PHP的擴充套件cli模式與php fpm不一致
php m和phpinfo 打出的擴充套件完全不一樣。1.安裝完擴充套件後需要重啟php 2.php fpm啟動時通過 c指定php.ini檔案路徑,y 指定php fpm.conf檔案路徑 php fpm c usr local php etc php.ini y usr local php et...