题解 | #合并表记录#
合并表记录
https://www.nowcoder.com/practice/de044e89123f4a7482bd2b214a685201
#include <stdio.h>
#include <stdbool.h>
#include <string.h>
typedef struct Data {
int flag;
int index;
int value;
} Data;
int main() {
int index_num;
int value_num;
int top = 0, num;
int len = 500;
void bubble_sort(Data data[], int n);
scanf("%d", &num);
Data data[num];
memset(data, 0, sizeof(data));
for (int i = 0; i < num; i++) {
scanf("%d %d", &index_num, &value_num);
if (data[top].flag == 0 || data[top].index == index_num) {
if (data[top].flag == 0) {
data[top].flag = 1;
}
data[top].index = index_num;
data[top].value += value_num;
} else {
top++;
data[top].flag = 1;
data[top].index = index_num;
data[top].value += value_num;
}
}
bubble_sort(data, num);
for (int i = 0; i < num - 1; i++) {
for (int j = i + 1; j < num; j++) {
if (data[i].index == data[j].index) {
data[i].value += data[j].value;
data[j].value = 0;
}
}
}
for (int i = 0; i < num; i++) {
if (data[i].value != 0) {
printf("%d %d\n", data[i].index, data[i].value);
}
}
return 0;
}
void bubble_sort(Data A[], int n) {
bool flag;
Data temp;
for (int i = 0; i < n - 1; i++) {
flag = false;
for (int j = n - 1; j > i; j--) {
if (A[j].index < A[j - 1].index) {
temp = A[j];
A[j] = A[j - 1];
A[j - 1] = temp;
flag = true;
}
}
if (flag == false)
return;
}
}
海康威视公司福利 1149人发布
