题解 | #合并表记录#
合并表记录
http://www.nowcoder.com/practice/de044e89123f4a7482bd2b214a685201
#include <stdio.h>
//冒泡排序
void bubbleSort(int arr[][2], int arrSize, int mode)
{
int temp = 0;
for(int i = 0 ; i < arrSize - 1 ; i++)
{
for(int j = 0 ; j < arrSize - i - 1 ; j++)
{
if(mode == 0) //升序
{
if(arr[j][0] > arr[j+1][0])
{
//交换index值
temp = arr[j+1][0];
arr[j+1][0] = arr[j][0];
arr[j][0] = temp;
//交换value值
temp = arr[j+1][1];
arr[j+1][1] = arr[j][1];
arr[j][1] = temp;
}
}
else if(mode == 1)//降序
{
if(arr[j][0] < arr[j+1][0])
{
//交换index值
temp = arr[j+1][0];
arr[j+1][0] = arr[j][0];
arr[j][0] = temp;
//交换value值
temp = arr[j+1][1];
arr[j+1][1] = arr[j][1];
arr[j][1] = temp;
}
}
}
}
}
int main(void)
{
int num = 0;
scanf("%d",&num);
int index = 0, value = 1, flag = 0;
int list[500][2] = {0};
for(int i = 0 ; i < num ; i++)
{
scanf("%d",&index);
/* 遍历数组,寻找有没有存在相同index的元素,若有的话就在已存在的index元素中进行累加 */
for(int j = 0 ; j < i + 1 ; j++)
{
if(list[j][0] == index)
{
scanf("%d",&value);
list[j][1] += value;
flag = 1;
break;
}
}
/* 遍历数组后,没有发现存在相同index的元素,因此新增index元素 */
if(flag == 0)
{
list[i][0] = index;
scanf("%d",&value);
list[i][1] = value;
}
flag = 0;
}
/* 对元素保存结果进行排序 */
bubbleSort(list, num, 0);
for(int i = 0 ; i < num ; i++)
{
if(list[i][1] != 0)
printf("%d %d\r\n", list[i][0], list[i][1]);
}
}