Task Description
最後的元素
給定長度為 n 的正整數陣列 A。以下是演算法的流程:
每一輪,從 A 中選出兩個最大的元素 x 和 y,其中 x≤y。
如果 x=y,則同時從 A 中刪除;
如果 x≠y,則將 x 從 A 中刪除,並用 y-x的值取代原本的 y,
最後會剩下至多一個元素,請將此元素印出,若 A 中無任何元素留下則印出0。
請使用此函數原型 int lastStoneWeight(int* stones, int stonesSize)、void insert(int* stone, int stoneSize, int value)、int extractMax(int* stone, int stoneSize)完成。
int lastStoneWeight(int* stones, int stonesSize) : 題目演算法
void insert(int* stone, int stoneSize, int value) : 用y-x取代原本的y
int extractMax(int* stone, int stoneSize) : 取最大元素
Hint
LastElement.h
打上 function header 以及相關的設定。
int extractMax( int * stone, int stoneSize);
void insert( int * stone, int stoneSize, int value);
int lastStoneWeight( int * stones, int stonesSize);
|
LastElement.c
撰寫程式碼後對應上傳。
#include "LastElement.h"
int extractMax( int * stone, int stoneSize) {
}
void insert( int * stone, int stoneSize, int value) {
}
int lastStoneWeight( int * stones, int stonesSize) {
}
|
main.c
這個檔案無法更改也無須上傳。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | #include <stdio.h>
#include <stdlib.h>
#include "LastElement.h"
int main() {
int n = 0;
int ans;
scanf ( "%d" , &n);
int * a = ( int *) malloc (n * sizeof ( int ));
for ( int i = 0; i < n; i++) {
scanf ( "%d" , &a[i]);
}
ans = lastStoneWeight(a, n);
printf ( "%d" , ans);
free (a);
return 0;
}
|
Input Format
第一列輸入為 n,第二列輸入為 A 中的 n 個元素值。
Note: 0<n≤100、0≤A[i]≤100
Sample Input
Sample Output
Sample Input
Sample Output