原创 第六章 數學問題 -------- 6.7【擴展歐幾里得】一步之遙

題目: 一步之遙 從昏迷中醒來,小明發現自己被關在X星球的廢礦車裏。  礦車停在平直的廢棄的軌道上。  他的面前是兩個按鈕,分別寫着“F”和“B”。 小明突然記起來,這兩個按鈕可以控制礦車在軌道上前進和後退。  按F,會前進97米。按B

原创 第六章 數學問題 -------- 6.5 歐幾里得算法及其擴展

先來看看歐幾里得算法: public class Gcd { /** * 歐幾里德算法,即輾轉相除法 最大公約數 */ public static long gcd(long m, long n) {

原创 【數學問題】判斷一個數是否是素數

若n爲素數,則其不能被2,3,...,n-1 整除。 更加快速的判定方法: 判斷n能否被2,3,...,⌊√n ⌋ 整除。 1、代碼: #include<iostream> #include<cmath> using names

原创 【數學問題】最大公約數與最小公倍數

一、最大公約數: 輾轉相除法 ①、遞推式:gcd(a,b)=gcd(b,a%b); ②、遞推邊界: gcd(a,0)=a。   1、函數:  //求a與b的最大公約數 int gcd(int a,int b) { if(b=

原创 第六章 數學問題 -------- 6.2【Nim遊戲】高僧鬥法

先來看看Nim定理: // 若干堆硬幣,二人輪流取,從一堆硬幣中取幾個 直到某個人不能取硬幣 那這個人就輸了 // 3 4 5 // 3 3 把硬幣變成相同的 那麼你就贏了 因爲你可以跟着另一個人一樣的取法

原创 第七章 遞歸、DFS、剪枝、回溯等問題 ------------- 7.3 題解:機器人走方格問題

機器人走方格 一、問題:    有一個X*Y的網格,一個機器人只能走格點且只能向右或向下走,要從左上角走到右下角。 請設計一個算法,計算機器人有多少種走法。 給定兩個正整數int x,int y,請返回機器人的走法數目,保證x+y小於等於

原创 第七章 遞歸、DFS、剪枝、回溯等問題 ------------- 7.4 硬幣表示某個給定數值

一、題目:   假設我們有8種不同面值的硬幣{1,5,10,25},用這些硬幣組合構成一個給定的數值n。 例如n=100,那麼一種可能的組合方式爲 100 = 2*25+5*5+2*10+5*1。 問總共有多少種可能的組合方式? 二、思路

原创 第六章 數學問題 -------- 6.11【同餘方程組】POJ1006 生理週期

同餘方程組:   先來看一道題目:有物不知其數,三三數之剩二;五五數之剩三;七七數之剩二。問物幾何?  然後我們可以做如下變換,設x爲所求的數。    x%3=2              x ≡ a1(%m1)  ①    x%5=3

原创 C++分割字符串,及strtok函數使用

一、使用strtok分割字符數組: 1、strtok函數原型: char * strtok (char * str, const char * delimiters); ①、參數str指向要分割的字符串,參數delimiters則爲

原创 C++獲取數組的長度

使用模板template。 1、求數組長度的模板函數: template<class T> int length(T& arr) { //cout << sizeof(arr[0]) << endl; //cout

原创 C++中const的用法

一、修飾局部變量: const int n=5; int const n=5; 這兩種寫法是一樣的,都是表示變量n的值不能被改變了。 需要注意的是,用const修飾變量時,一定要給變量初始化,否則之後就不能再進行賦值了。 const

原创 【char* 字符指針的用法】及【輸出NULL的問題】

一、char* 字符指針的用法: 1、幾點概念:  char test[ ]="ab  c\0d ef"; char * p=test; *p  ====>所指的單個字符。  p  ====>相當於字符數組的名字,整個數組。 2、代碼

原创 第五章 字符串專題 ---------------- 5.7 題解:旋轉詞

題目: 旋轉詞問題。如果一個字符串str,把字符串str前面任意的部分挪到後面形成的字符串叫做str的旋轉詞。判斷兩個字符串是否互爲旋轉詞。 public class IsRotate { public static vo

原创 第五章 字符串專題 ---------------- 5.9 題解:去掉字符串中連接出現的k次的0

題目: 移除字符串中連續出現的K個0。   /** * 移除字符串中連續出現的k個0 * @author xiaow * * 可以用掃描字符數組的解法,但是用正則表達式更爲快捷 * */ public class Re