由於被很多公司的筆試程式設計題虐了,才想著要做做演算法題了。自己的基礎看來太薄弱了些。因此決定先從賽碼網的基本演算法題開始做起。這裡想記錄一下賽碼網裡面題的情況。
由於基礎薄弱,就先從兩星的題開始做起。每日兩道。
這道題看起來比較簡單,我們可以從第一級樓梯開始分析。當樓梯只有一級時,有0種走法;當有2級時,有1種走法;有3級時,有2種走法。當有4級時,我們可以想到先從一級跳到第二級,然後二級到四級的情況就變成有3級樓梯時的走法了,這時候有2種走法到四級,同理,如果先從一級跳到第**後,就和有2級樓梯時一樣,因此4級樓梯有2+1種。後面的情況是一樣的,如5級樓梯的就是4級的走法加3級的走法。因此可以寫出遞迴式: f(
m)=⎧
⎩⎨⎪⎪
⎪⎪01
2f(m
−1)+
f(m−
2)(m
=1)(
m=2)
(m=3
)(m>3)
所以呢,就是完成這個遞迴。**如下:
本題的內容就是給定了十進位制數的範圍,求這個範圍中有多少個數的二進位制表示中有m個1。
看到這道題,我想到的是在《程式設計之美》那本書中看到過求乙個數二進位制表示中有多少個1的問題。因此這裡也是先寫出獲取二進位制中有多少個1的函式。接下來就比較簡單了,遍歷l~r範圍中的數,看看有多少個數的二進位制1的個數為m。
**如下:
#include
using
namespace
std;
//返回n轉換為二進位制後1的個數
int countone(int n)
return num;
}int getcount(int l,int r,int m)
l++;
}if (0 == m_num)
return m_num;
}int main(int argc, const
char * argv)
C 基本演算法練習一
1.計算兩個整數的和,如果這兩個數字相等,那麼計算這兩個數字和的三倍 public intmethod int first,int second 2.寫乙個程式實現n和51的差的絕對值,如果n大於51那麼請返回差的絕對值的三倍public intmethod int n 3.寫乙個程式程式來檢查兩個...
基本演算法練習五
這道題看上去還是蠻簡單的,我想到的就是字串替換。由於它說了字串不超過1000,那麼我在程式裡就直接建乙個char陣列,這樣的話能夠很方便的修改對應的元素。如果是用字串指標的話,字串是存在常量區在。沒有陣列之間修改方便。如下 這道題也是基本的迴圈判斷,就是需要設定乙個p個籃筐陣列,用來儲存裡面是不是有...
演算法設計題練習1
例1 n 1各不同的整數 a1,a2,a3,an,m 假設有乙個亂序的整數序列,其中 a1,a2,a3,a4,an均出現兩次,m出現一次 需要找出出現一次的m。功能實現 num 1,1,2,2,3,3,4,5,4,5,6,7,7,6,8,9,9,8,10 num1 for i in range le...