基本演算法題練習一

2021-07-24 02:14:45 字數 1382 閱讀 6597

由於被很多公司的筆試程式設計題虐了,才想著要做做演算法題了。自己的基礎看來太薄弱了些。因此決定先從賽碼網的基本演算法題開始做起。這裡想記錄一下賽碼網裡面題的情況。

由於基礎薄弱,就先從兩星的題開始做起。每日兩道。

這道題看起來比較簡單,我們可以從第一級樓梯開始分析。當樓梯只有一級時,有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...