面試題 劍指offer14

2021-07-27 22:53:02 字數 1282 閱讀 2672

題目:

調整陣列資料使奇數全部在偶數前面

解法一:

void oddnumberfront1(int

*arr,int

length)

int* first;

int* last;

first=arr;

last=arr+length-1;

while(first

while (first

if(first}}

這種解法比較單一,只能解答這一種問題

解法二:將判斷是否為偶數單獨作為乙個函式,這樣要是限制條件改變後,只改變這個函式即可,下面新增了可被3整除的在後面,不被的在前面

#include

#include

using namespace std;

bool iseven(int n)//判斷是否為偶數

bool is3multiplc(int n)//判斷是否可以被3整除

void reorder(int

*arr,int

length,bool(*func)(int))

while (first

if(first

}}void mulitplc(int

*arr,int

length,bool(*func)(int))

while (first

if(first

}}void reorderoddeven(int * arr,int

length)

void muliptlc3front(int * arr,int

length)

void printarr(int* arr,int

length)

cout

reorderoddeven(arr,9);

printarr(arr,9);

}void test2()

; reorderoddeven(arr1,1);

printarr(arr1,1);

}void test3()

void test4()

; muliptlc3front(arr,9);

printarr(arr,9);

}int main()

結果

劍指offer 面試題14 剪繩子

給你一段長度為n的繩子,請把繩子剪成m段 m n都是整數,n 1並且m 1 每段繩子的長度記為k 0 k 1 k m 請問k 0 k 1 k m 可能的最大乘積是多少?例如,當繩子的長度是8時,我們把它剪成長度分別為2 3 3的三段,此時得到的最大乘積是18。第一種是動態規劃 自下而上 public...

《劍指Offer》面試題14 剪繩子

要求 剪繩子 給你一根長度為n的繩子,請把繩子剪成m段 m n都是整數,n 1,並且m 1 每段繩子的長度記為k 0 k 1 k m 請問看k 0 k 1 k m 可能的最大乘積是多少?例如,當繩子的長度是8時,我們把它剪成長度分別為2,3,3,的三段,此時得到的最大乘積是18。測試用例 功能測試 ...

面試題14 劍指offer 剪繩子

題目 給你一根長度為n的繩子,請把繩子剪成m段 m和n都是整數,n 1並且m 1 每段繩子的長度記為k 0 k 1 k m 請問k 0 k 1 k m 可能的最大乘積是多少?例如,當繩子的長度為8時,我們把它剪成長度分別為2,3,3的三段,此時得到的最大乘積是18.思路 利用動態規劃法,f n 表示...