题解 | #合并表记录#
合并表记录
http://www.nowcoder.com/practice/de044e89123f4a7482bd2b214a685201
#include <stdio.h>
#include <string.h>
int main()
{
struct Dict
{
long index;
long value;
};
int n, i, j, k;
int p, r;
char q;
struct Dict kvalue[500];
struct Dict fuzhu;
memset(kvalue, -1, sizeof(kvalue));
fuzhu.index = 0;
fuzhu.value = 0;
scanf("%d", &n);
for (i = 0; i < n; i++)
{
scanf("%d", &p);
scanf("%c", &q);
scanf("%d", &r);
j = 0;
while (kvalue[j].index != -1)
{
if (kvalue[j].index == p)
{
kvalue[j].value += r;
break;
}
else
j++;
}
if (kvalue[j].index == -1)
{
kvalue[j].index = p;
kvalue[j].value = r;
}
}
// sort
for (i = 0; i < n - 1; i++)
{
k = i;
for (j = i + 1; j < n; j++)
if ((kvalue[j].index != -1) && (kvalue[k].index > kvalue[j].index))
k = j;
fuzhu = kvalue[k]; kvalue[k] = kvalue[i]; kvalue[i] = fuzhu;
}
for (j = 0; (j < n) && (kvalue[j].index != -1); j++)
{
printf("%d %d\n", kvalue[j].index, kvalue[j].value);
}
return 0;
}

查看1道真题和解析