hdu1263

类型;数据处理
思路:结构体,排序。首先按产地字母排序,然后按水果名称排序。牵涉到字符排序,那么就需要使用
知识点:结构体。
相似题:hdu1225
容易忽略的地方:
一、M行中存在地方,名称相同的水果
二、
难点:不会写代码

#include
#include 
#include
using namespace std;
struct Node
{
    char name[100];
    char space[100];
    int num;
} f[110];
int cmp(Node x,Node y)
{
    if(strcmp(x.space,y.space))
        return strcmp(x.space,y.space)<0;
    return strcmp(x.name,y.name)<0;
}
 int main()
{
    int t,n,i;
    cin>>t;
    while(t--)
    {
        cin>>n;
        for(i = 0; i>f[i].name>>f[i].space>>f[i].num;
        }
        sort(f,f+n,cmp);
        char di[100],min[100];
        int cnt = 0,flag = 1;
        strcpy(di,f[0].space);
        strcpy(min,f[0].name);
        for(i = 0; i

相似题目:hdu1225
简单易懂版

#include"iostream"
#include"algorithm"
#include"string"

using namespace std;

struct str
{
	string name;//水果名称 
	string where;//水果产地 
	int num;//水果数量 
}fruit[107];

bool cmp(struct str a, struct str b)//先按地点排序地点相同按水果名称排序 
{
	if (a.where != b.where)
		return a.where < b.where;
	else
		return a.name < b.name;
}

int main()
{
	int n;
	cin >> n;
	for (int i = 0; i < n; i++)
	{
		int m;
		cin >> m;
		for (int j = 0; j < m; j++)
		{
			cin >> fruit[j].name >> fruit[j].where >> fruit[j].num;
		}
		sort(fruit, fruit + m, cmp);
		string where = fruit[0].where;
		cout << where << endl;
		string name = fruit[0].name;
		int num = fruit[0].num;
		for (int j = 1; j < m; j++)
		{
			if (fruit[j].where == where)
			{
				if (name == fruit[j].name)
				{
					num += fruit[j].num;
				}
				else
				{
					cout << "   |----" << name << "(" << num << ")" << endl;
					name = fruit[j].name;
					num = fruit[j].num;
				}
			}
			else
			{
				cout << "   |----" << name << "(" << num << ")" << endl;//重要!上一组数据。
				cout << fruit[j].where << endl;;
				where = fruit[j].where;
				name = fruit[j].name;
				num = fruit[j].num;
			}
		}
		cout << "   |----" << name << "(" << num << ")" << endl;
		if (i != n - 1)//题目要求每两组数据间有换行 
			cout << endl;
	}
	return 0;
}

你可能感兴趣的:(数据处理,不懂)