指標_錯的_最後的元素
user_3763047219
c_cpp
2 years ago
1.6 kB
3
Indexable
int extractMax(int* stone, int stoneSize); void insert(int* stone, int stoneSize, int value); int lastStoneWeight(int* stones, int stonesSize); int extractMax(int* stone, int stoneSize) { if (stoneSize > 1) { insert(stone, stoneSize, *stone); } else if (stoneSize == 1) { return *stone; } else if (stoneSize == 0) { return 0; } } void insert(int* stone, int stoneSize, int value) { if (value == *(stone-1)) { *stone = 0; *(stone - 1) = 0; stoneSize =stoneSize- 2; stone = stone - 2; } else { *(stone - 1) = value; *stone = 0; stoneSize = stoneSize- 1; stone = stone - 1; } extractMax(stone, stoneSize); } int lastStoneWeight(int* stones, int stonesSize) { for (int i = stonesSize - 1; i > 0; i--) { for (int j = 0; j < i; j++) { if (*stones > *(stones + 1)) { int temp = *stones; *stones = *(stones + 1); *(stones + 1) = temp; } stones++; } stones = stones - i; } stones = stones + stonesSize - 1; return extractMax(stones, stonesSize); } #include <stdio.h> #include <stdlib.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; }
Editor is loading...