HDU 1263 과일 2 차원 맵 또는 정렬

과일.
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 8572 Accepted Submission(s): 3411
Problem Description 여름 이 오 니 정말 기 쁩 니 다. 하하, 많은 과일 Joe 들 이 크 지 않 은 과일 가 게 를 운영 하고 있 습 니 다. 그 는 생존 의 길 은 고객 들 에 게 가장 인기 있 는 과일 을 경영 하 는 것 이 라 고 생각 합 니 다. 지금 은 과일 판매 상황 의 내 역 표를 원 합 니 다. 그러면 Joe 는 모든 과일 판매 상황 을 쉽게 파악 할 수 있 습 니 다.
Input 첫 줄 의 정수 N (0 < N < = 10) 은 N 조 의 테스트 데 이 터 를 표시 합 니 다. 각 조 의 테스트 데이터 의 첫 줄 은 하나의 정수 M (0 < M < = 100) 로 작업 이 M 번 의 성공 적 인 거래 를 표시 합 니 다. 그 다음 에 M 행 데이터 가 있 고 각 줄 은 한 번 의 거래 를 표시 합 니 다. 과일 이름 (소문 자로 구성 되 고 길 이 는 80 을 초과 하지 않 습 니 다), 과일 산지 (소문 자로 구성 되 어 있 으 며 길 이 는 80 을 초과 하지 않 습 니 다) 와 거래 하 는 과일 수량 입 니 다.(정수, 100 을 초과 하지 않 음) 구성.
출력 은 각 그룹의 테스트 데이터 에 대해 조판 형식 을 정확하게 출력 하 십시오 (샘플 출력 을 분석 하 십시오)의 과일 판매 현황 명세서. 이 명세 서 는 모든 과일의 생산지, 명칭 과 판매 수량 에 대한 정 보 를 포함한다. 과일 은 생산지 별로, 산 지 는 알파벳 순 으로, 같은 생산지 의 과일 은 명칭 순 으로, 명칭 은 알파벳 순 으로 순 서 를 매 긴 다. 두 조 의 테스트 데이터 사이 에 빈 줄 이 하나 있다. 마지막 조 의 테스트 데이터 이후 빈 줄 이 없다.
Sample Input 1 5 apple shandong 3 pineapple guangdong 1 sugarcane guangdong 1 pineapple guangdong 3 pineapple guangdong 1
Sample Output guangdong | - pineapple (5) | - sugarcane (1) shandong | - app (3) 사고방식 1: 2 차원 맵 인덱스 를 이용 하여 데 이 터 를 추가 한 후 맵 을 옮 겨 다 니 기
#include
#include
#include
using namespace std;
int main()
{
    int t;
    cin >> t;
    while (t--)
    {
        int m;
        map >mp;
        string place, name;
        int num;
        cin >> m;
        //读入数据
        for (int i = 0; i> name >> place >> num;
            mp[place][name] += num;
        }
        //遍历
        for (map >::iterator iter1 = mp.begin(); iter1 != mp.end(); iter1++)
        {
            cout << iter1->first << endl;
            for (map::iterator iter2 = iter1->second.begin(); iter2 != iter1->second.end(); iter2++)
                cout << "   |----" << iter2->first << "(" << iter2->second << ")" << endl;
        }
        if (t != 0)cout << endl;
    }
}

사고 2: 세 가지 속성 을 하나의 구조 체 에 넣 고 배열 을 완전히 정 합 니 다. 배열 순 서 를 정 한 후에 처음부터 끝까지 한 번 훑 어 보 았 습 니 다. 산지 와 과일 이름 이 같은 것 은 앞의 수량 을 뒤의 그 위 에 올 린 다음 에 앞의 수량 을 0 으로 설정 합 니 다. 이렇게 처리 한 후에 바로 처음부터 끝까지 수출 합 니 다. 만약 에 i 가 앞의 산지 와 다 르 면 생산 지 를 수출 합 니 다.i 의 수량 이 0 이 아니면 과일 을 수출 합 니 다.
마지막 for 순환 에서 두 if 각각 두 개의 출력 을 제어 합 니 다.
#include
#include
#include
using namespace std;
struct INFO
{
	string area, fruit;
	int num;
}info[102];

inline bool my_cmp(const INFO& lhs, const INFO& rhs) 
{
	if (lhs.area == rhs.area)
		return lhs.fruit < rhs.fruit;
	return lhs.area < rhs.area;
}

int main() {
	int Group, m;
	cin >> Group;
	while (Group--) {
		int j = 0;
		cin >> m;
		for (int i = 0; i < m; i++)
			cin >> info[i].fruit >> info[i].area >> info[i].num;
		sort(info, info + m, my_cmp);

		for (int i = 1; i

좋은 웹페이지 즐겨찾기