HDU 1862 EXCEL 정렬(구조 체 정렬)
Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 16387 Accepted Submission(s): 6137
Problem Description
Excel 은 한 그룹의 기록 을 임의로 지정 한 열 에 따라 정렬 할 수 있다.지금 프로그램 을 작성 하여 유사 한 기능 을 실현 하 십시오.
Input
테스트 입력 은 약간의 테스트 용례 를 포함한다.각 테스트 용례 의 첫 번 째 줄 은 두 개의 정수 N(<=100000)과 C 를 포함 하 는데 그 중에서 N 은 기 록 된 개수 이 고 C 는 정렬 된 열 번 호 를 지정 합 니 다.다음은 N 줄 로 각 줄 에 학생 기록 이 하나씩 포함 되 어 있다.각 학생 기록 은 학 번(6 자리 숫자,같은 그룹 테스트 에서 중복 되 는 학 번 이 없 음),이름(8 자 를 넘 지 않 고 빈 칸 이 포함 되 지 않 은 문자열),성적(폐 구간[0,100]내의 정수)으로 구성 되 며 항목 마다 1 개의 빈 칸 으로 분리 된다.N=0 까지 읽 었 을 때 모든 입력 이 끝나 면 해당 결 과 는 출력 하지 마 십시오.
Output
모든 테스트 용례 에 대해 먼저 1 줄 의"Case i:"를 출력 합 니 다.그 중에서 i 는 테스트 용례 의 번호(1 부터)입 니 다.그 다음 에 N 줄 에서 요구 에 따라 정렬 한 결 과 를 출력 합 니 다.즉,C=1 일 때 학 번 에 따라 정렬 합 니 다.C=2 시 이름 의 비 체감 사전 순서에 따라 정렬 합 니 다.C=3 시 성적 의 비 체감 에 따라 정렬 합 니 다.몇몇 학생 들 이 같은 이름 이나 같은 성적 을 가지 고 있 을 때,그들의 학 번 에 따라 점차 순 위 를 매 긴 다.
Sample Input
3 1 000007 James 85 000010 Amy 90 000001 Zoe 60 4 2 000007 James 85 000010 Amy 90 000001 Zoe 60 000002 James 98 4 3 000007 James 85 000010 Amy 90 000001 Zoe 60 000002 James 90 0 0
Sample Output
Case 1: 000001 Zoe 60 000007 James 85 000010 Amy 90 Case 2: 000010 Amy 90 000002 James 98 000007 James 85 000001 Zoe 60 Case 3: 000001 Zoe 60 000007 James 85 000002 James 90 000010 Amy 90
Source
절 대 컴퓨터 대학원 재시험
문제 풀이:구조 체 정렬,c=1,c=2,c=3 시의 분류 조건 주의
AC 코드:
#include<iostream>
#include<cstdlib>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<string>
#include<cstdlib>
#include<iomanip>
#include<algorithm>
#include<time.h>
typedef long long LL;
using namespace std;
struct stud
{
int num;
char name[10];
int score;
} stu[100001];
int cmp1(stud a,stud b)
{
return a.num<b.num;
}
int cmp2(stud a,stud b)
{
if(strcmp(a.name,b.name)==0)
return a.num<b.num;
return strcmp(a.name,b.name)<0;
}
int cmp3(stud a,stud b)
{
if(a.score==b.score)
return a.num<b.num;
return a.score<b.score;
}
int main()
{
int n,c,cas=1;
while((cin>>n>>c)&&(n||c))
{
memset(stu,0,sizeof(stu));
for(int i=0; i<n; i++)
scanf("%d %s %d",&stu[i].num,stu[i].name,&stu[i].score);
if(c==1)
sort(stu,stu+n,cmp1);
else if(c==2)
sort(stu,stu+n,cmp2);
else if(c==3)
sort(stu,stu+n,cmp3);
printf("Case %d:
",cas++);
for(int i=0; i<n; i++)
printf("%06d %s %d
",stu[i].num,stu[i].name,stu[i].score);
}
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[HDU] 4089 활성화 확률 DPdp[i][j]를 모두 i개인의 대기열인 Tomato가 j위 서버가 마비될 확률로 역추를 사용하면 우리는 상태 이동 방정식을 얻을 수 있다. i == 1 : dp[1][1] = dp[1][1] * p1 + dp[1]...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.