機試 華為 陣列最大值放中間,其他依次放其左右

2021-08-19 01:39:32 字數 1154 閱讀 5984

給定乙個陣列input ,如果陣列長度n為奇數,則將陣列中最大的元素放到 output 陣列最中間的位置,如果陣列長度n為偶數,則將陣列中最大的元素放到 output 陣列中間兩個位置偏右的那個位置上,然後再按從大到小的順序,依次在第乙個位置的兩邊,按照一左一右的順序,依次存放剩下的數。

例如:input =              output = ;            

input =          output = 

**:

# include # include int * get(int *input, int lenth)

}//for (int i = 0; i < lenth; i++)

// std::cout << input[i] << " ";

//std::cout << std::endl;

int *output = (int *)malloc(sizeof(int)* lenth);

// 方法1:觀察資料,先放左邊的,即原陣列從右往左隔兩個數,再放中位數以及右邊的,即原陣列從左往右隔兩個,注意奇偶數個數不同,開始位置不同

//if (lenth % 2 == 0)

////else

//// 方法二,找出中位數(即原陣列第乙個),放到新陣列中間,然後將原陣列兩個兩個的一起處理,在中位數左邊和右邊分別放置。注意,奇偶個數不同時,處理方式不一樣

int posi;

if (lenth % 2 == 1)

}else

output[0] = input[lenth - 1]; // 偶數個數時,右側中位數單獨處理了,所以,最後乙個數沒有成對的處理

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

std::cout << output[i] << " ";

return input;

}int main()

; // int input[6] = ;

int lenth = sizeof(input) / sizeof(int);

int *output = get(input, lenth);

std::cout << "ok";

}

思想:先排序,後按照奇偶個數不同,單獨處理。一左一右放,可以考慮到一次放一對。

華為機試 放蘋果

題目描述 把m個同樣的蘋果放在n個同樣的盤子裡,允許有的盤子空著不放,問共有多少種不同的分法?用k表示 5,1,1和1,5,1 是同一種分法。輸入每個用例包含二個整數m和n。0 m 10,1 n 10。樣例輸入 7 3 樣例輸出 輸入描述 輸入兩個int整數 輸出描述 輸出結果,int型 分析 輸入...

華為機試 放蘋果

題目描述 把m個同樣的蘋果放在n個同樣的盤子裡,允許有的盤子空著不放,問共有多少種不同的分法?用k表示 5,1,1和1,5,1 是同一種分法。資料範圍 0 m 10,1 n 10。本題含有多組樣例輸入。解題思路 動態規劃,兩種情況 1.如果有空盤子,那麼,相當於縮減為m個蘋果放在n 1個盤子裡的問題...

華為機試 放蘋果(遞推公式求解)

題目描述 把m個同樣的蘋果放在n個同樣的盤子裡,允許有的盤子空著不放,問共有多少種不同的分法?用k表示 5,1,1和1,5,1 是同一種分法。輸入每個用例包含二個整數m和n。0 m 10,1 n 10。樣例輸入 7 3樣例輸出 public static int count int m,int n ...