1. 程式人生 > 其它 >考研機試——找最小數

考研機試——找最小數

技術標籤:考研機試每日一測

題庫連結:https://blog.csdn.net/weixin_43905586/article/details/112438701

測試連結:https://www.nowcoder.com/practice/ba91786c4759403992896d859e87a6cd?tpId=67&tqId=29645&tPage=1&ru=/kaoyan/retest/1005&qru=/ta/bupt-kaoyan/question-ranking

用時:30分鐘


分享名言一句

  • Freedomisnotlettingyoudowhateveryouwanttobutteachingyounottodothethingsyoudon'twanttodo. ——Kant
  • 自由不是讓你想做什麼就做什麼,自由是教你不想做什麼,就可以不做什麼。——康德

時間限制: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

鄙人拙見

  1. 找出x中的最小值
  2. 將它們存入一個新陣列
  3. 再從新陣列中找出y最小的那個

C++參考程式碼1.0:

#include <iostream>
#include <bits/stdc++.h>
using namespace std;

int main()
{
    int n;
    scanf("%d",&n);
    int num[n][2];
    for(int i = 0; i < n; i++)
    {
        for(int j = 0; j < 2; j++)
        {
            scanf("%d",&num[i][j]);
        }
    }
    int min = 123456789;
    for(int i = 0; i < n; i++)
    {
        if(num[i][0] < min)
        {
            min = num[i][0];
        }
    }
    int count = 0;
    for(int i = 0; i < n; i++)
    {
        if(num[i][0] == min)
        {
            count++;
        }
    }
    int newnum[count][2];
    int t = 0;
     for(int i = 0; i < n; i++)
    {
        if(num[i][0] == min)
        {
            newnum[t][0] = num[i][0];
            newnum[t][1] = num[i][1];
            t++;
        }
    }
    int minmin = 123456789;
    for(int i = 0; i < count; i++)
    {
        if(newnum[i][1] < minmin)
        {
            minmin = newnum[i][1];
        }
    }
    for(int i = 0; i < count; i++)
    {
        if(newnum[i][1] == minmin)
        {
            printf("%d %d",newnum[i][0],newnum[i][1]);
        }
    }
    return 0;
}

尾言:作者水平有限,讀者思維無限,若有細節錯誤請見諒,若有好的想法,歡迎評論區留言。