憶一道百度面試題

2021-06-26 14:09:15 字數 729 閱讀 9611

題意:題目大概的意思是有乙個n x n的矩陣方格,在這個矩陣中有m個硬幣,每個硬幣的位置事先知道,且乙個格仔最多只能放乙個硬幣,現有乙個機械人從(0,0)的位置開始走,每次只能向下或者向右走一格,最終到達(n,n),設計程式計算機械人能拿到的最大的硬筆數。

看到這個題目一看就是乙個動態規劃的問題。既然是動態規劃問題,就需要找到狀態和狀態轉換方程。

先做一些設定:

1、coins[n][n]用來表示整個矩陣,用0,1初始化矩陣,若coins[i][j] == 1,表示當前格仔有硬幣,0則表示沒有硬幣;

2、設s[i][j]表示機械人走到第(i, j)這個位置的時候最多能收集的硬幣數;

s[i][j] = max(s[i - 1][j] ,s[i][j - 1] ) + coins[i][j];
下面直接上**:
#include#includeusing namespace std;

#define n 4

int maxcoins(int(*a)[n])

; for(int i = 0; i < n; i++) }

return s[n - 1][n -1];

}int main()

, ,,};

int max = maxcoins(a);

cout<<"the max coins is:"<

一道百度面試題

給出乙個整型陣列num,對其中的每個元素,輸出在它左側且比它小的最近元素,要求時間複雜度為o n 例如int num 2無左側最近元素 4左側最近的是2 1沒有 3左側最近的是1.分析 建立乙個棧,然後將陣列中的元素從右至左依次壓入棧中。對每個元素,入棧前先檢查棧頂元素是否比它大,若是的話,則該元素...

一道百度面試題

下面這段 是把中英文混合字串 漢字用兩個位元組表示,特點是第乙個位元組的最高位為1 中的大寫字母轉化為小寫字母,請找出其中的bug,注意各種異常情況。for char piterator szword piterator 0 piterator else if piterator a piterat...

百度一道面試題

我這裡複製的是原話,當然順序是不一定的,很多拿到題目第一反應就是用map,當然可以解決,但是效率不高。還有人覺得應該用演算法 我是沒想到用啥演算法好.還有覺得應該先排序.還有覺得用位圖.bitmap 等等方法!我都覺得麻煩,思維方式就是,從節省時間考慮,從陣列來看,我們都得遍歷一次陣列裡面的元素,那...