首页 > 试题广场 >

找最小数

[编程题]找最小数
  • 热度指数:20910 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 64M,其他语言128M
  • 算法知识视频讲解
第一行输入一个数n,1 <= n <= 1000,下面输入n行数据,每一行有两个数,分别是x y。输出一组x y,该组数据是所有数据中x最小,且在x相等的情况下y最小的。 

输入描述:
输入有多组数据。
每组输入n,然后输入n个整数对。


输出描述:
输出最小的整数对。
示例1

输入

5  
3 3  
2 2  
5 5  
2 1  
3 6

输出

2 1
#include<stdio.h>
typedef struct number{
    int x; 
    int y;

}num;
int cmp(const void *a,const void *b){
    num *c=(num *)a;
    num *d=(num *)b;
    if(c->x!=d->x){
        return c->x>d->x;
    }else{
        return c->y>d->y;
    }
}
int main(){
    int n,i;
    num a[1000];
    while(scanf("%d",&n)!=EOF){
        for(i=0;i<n;i++){
            scanf("%d %d",&a[i].x,&a[i].y);    
        }
        qsort(a,n,sizeof(num),cmp);
        printf("%d %d",a[0].x,a[0].y);
    }
     return 0;

编辑于 2024-03-08 17:01:53 回复(0)
//传统方法
#include <stdio.h>
int main() {
    int i,x,y,n;
    while (scanf("%d", &n) != EOF) {
        int min=1000,y1=1000;
        for(i=0;i<n;i++){
            scanf("%d%d",&x,&y);
            if(min>x){
                min=x;
                y1=y; 
            }
            if(min==x){
                if (y1>y){
                    y1=y;
                }
            }
        } 
        printf("%d %d\n",min,y1);
    }
    return 0;
}

发表于 2023-03-24 16:29:37 回复(0)
法一:建立结构体,进行排序,然后输出第一个:
#include <stdio.h>
#include <stdlib.h>

typedef struct all{
    int x;
    int y;
}all;
int cmp(const void *a,const void *b){
    all *c=(all *)a;
    all *d=(all *)b;
    if(c->x!=d->x) return c->x - d->x;
    else return c->y - d->y;
}
int main(){
    int n;
    while(scanf("%d",&n)!=EOF){
        all num[1000];
        for(int i=0;i<n;i++){
            scanf("%d %d\n",&num[i].x,&num[i].y);
        }
        qsort(num,n,sizeof(num[0]),cmp);
        printf("%d %d\n",num[0].x,num[0].y);
    }
    return 0;
}
法二:边输入边比较
#include <stdio.h>
#include <stdlib.h>
#define INT_MAX 0x7fffffff
int main(){
    int n,a,b,mina,minb;
    mina=minb=INT_MAX;
    while(scanf("%d",&n)!=EOF){
        for(int i=0;i<n;i++){
            scanf("%d %d\n",&a,&b);
            if(mina>a){
                mina=a;
                minb=b;
            }else if(mina==a){
                if(minb>b){
                    minb=b;
                }
            }
        }
        printf("%d %d\n",mina,minb);
    }
    return 0;
}
注意:没有搞懂二维数组怎么写!
发表于 2022-02-23 12:04:03 回复(0)