[9 도] 제목 1187: 최 연소 3 명
직원 은 직원 번호, 이름, 나이 가 있 습 니 다. n 명의 직원 의 정 보 를 입력 하고 3 명의 나이 가 가장 어린 직원 을 찾 아 인쇄 합 니 다.
입력:
첫 번 째 줄 을 입력 하면 정수 N, 1 < = N < = 30 을 포함 하고 입력 데이터 의 개 수 를 대표 합 니 다.다음 N 줄 에는 N 명의 직원 의 정보 가 있 습 니 다. 직원 번호 (정수), 이름 (문자열, 길이 가 10 을 초과 하지 않 음), 연령 (1 < = age < = 100) 을 포함 합 니 다.
출력:
여러 그룹의 테스트 데이터 가 있 을 수 있 습 니 다. 각 그룹의 데이터 에 대해 출력 결과 줄 수 는 N 과 3 의 작은 값 으로 각각 나이 가 가장 어린 직원 의 정보 입 니 다.
키워드 순서: 나이 > 작업 번호 > 이름, 어 릴 때 부터.
샘플 입력:
5
501 Jack 6
102 Nathon 100
599 Lily 79
923 Lucy 15
814 Mickle 65
샘플 출력:
501 Jack 6
923 Lucy 15
814 Mickle 65
원본:
2003 - 2005 년 화중과기대학 컴퓨터 연구 생기 시험 문제
더 이상 익숙 할 수 없 는 서열 이다.stl 자체 가 가지 고 있 는 sort 함 수 를 사용 하 는 것 외 에 빠 른 정렬 을 써 볼 수 있 습 니 다.응, 내 가 하나 썼어.C++ AC
#include <stdio.h>
#include <algorithm>
#include<string.h>
using namespace std;
const int maxn = 32;
struct Member{
int id;
char name[102];
int age;
}members[maxn];
int n , i;
bool cmp(Member m1 , Member m2){
if(m1.age != m2.age){
return m1.age < m2.age;
}else {
if(m1.id != m2.id){
return m1.id < m2.id;
}else{
return strcmp(m1.name ,m2.name) < 0;
}
}
}
int sortUnit(int low ,int high){
Member m;
m.id = members[low].id;
strcpy(m.name,members[low].name);
m.age = members[low].age;
while(low < high){
while(low < high && cmp(m,members[high])){
high--;
}
members[low].id = members[high].id;
strcpy(members[low].name,members[high].name);
members[low].age = members[high].age;
while(low < high && cmp(members[low],m)){
low++;
}
members[high].id = members[low].id;
strcpy(members[high].name,members[low].name);
members[high].age = members[low].age;
}
members[high].id = m.id;
strcpy(members[high].name,m.name);
members[high].age = m.age;
return high;
}
void sort(int low ,int high){
if(low > high){
return;
}
int index = sortUnit(low,high);
sort(low ,index-1);
sort(index+1,high);
}
int main(){
while(scanf("%d",&n) != EOF){
for(i = 0; i < n; i++){
scanf("%d %s %d",&members[i].id,&members[i].name,&members[i].age);
}
sort(0,n-1);
int tmp = n < 3 ? n : 3;
for(i = 0; i < tmp; i++){
printf("%d %s %d
",members[i].id,members[i].name,members[i].age);
}
}
return 0;
}
/**************************************************************
Problem: 1187
User: wangzhenqing
Language: C++
Result: Accepted
Time:10 ms
Memory:1024 kb
****************************************************************/
자바 AC 입력 변경 StreamTokenizer 가 훨씬 빠 를 것 같 습 니 다.
import java.util.Arrays;
import java.util.Scanner;
public class Main {
/*
* 1187
*/
public static void main(String[] args) throws Exception {
Scanner scanner = new Scanner(System.in);
while (scanner.hasNext()) {
int N = scanner.nextInt();
Staff[] staffArray = new Staff[N];
for (int i = 0; i < N; i++) {
int staffId = scanner.nextInt();
String name = scanner.next();
int age = scanner.nextInt();
Staff staff = new Staff(staffId, name, age);
staffArray[i] = staff;
}
Arrays.sort(staffArray);
if ( N < 3) {
for (int i = 0; i < N; i++) {
System.out.println(staffArray[i].getStaffId()+" "+staffArray[i].getStaffName()+" "+staffArray[i].getAge());
}
}else {
for (int i = 0; i < 3; i++) {
System.out.println(staffArray[i].getStaffId()+" "+staffArray[i].getStaffName()+" "+staffArray[i].getAge());
}
}
}
}
}
class Staff implements Comparable<Staff>{
private int staffId;
private String staffName ;
private int age;
public int getStaffId() {
return staffId;
}
public void setStaffId(int staffId) {
this.staffId = staffId;
}
public String getStaffName() {
return staffName;
}
public void setStaffName(String staffName) {
this.staffName = staffName;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Staff(int staffId, String staffName, int age) {
super();
this.staffId = staffId;
this.staffName = staffName;
this.age = age;
}
public int compareTo(Staff o) {
if (this.getAge()!= o.getAge()) {
return this.getAge()-o.getAge();
}else {
if (this.getStaffId()!= o.getStaffId()) {
return this.getStaffId()- o.getStaffId();
}else {
return this.getStaffName().compareTo(o.getStaffName());
}
}
}
}
/**************************************************************
Problem: 1187
User: wzqwsrf
Language: Java
Result: Accepted
Time:480 ms
Memory:44708 kb
****************************************************************/
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.