zoukankan      html  css  js  c++  java
  • 近期的刷题

    北京邮电大学计算机院考研复试上机真题:
    试题一.找最小数
    第一行输入一个数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
    

    2.分析:依据题意可知:本题要求一组数据对中,在列中找出一个最小数,并且在列中保证最小一列的数据中得到相应行的数为最小数。因此,最有效的办法即使用排序进行操作。然而起初虽然我使用了sort排序,但是代码虽然可以通过测试案例,然而无法通过后台的测试用例,后来才得知,需要使用sort利用struct结构体进行排序。
    3.执行代码:

    #include<bits/stdc++.h>
    using namespace std;
        struct shuju{
    	int x;
    	int y;
    }student[1000];//先定义struct结构体,并且在结构体中存放行、列数据
    bool compare(shuju b1,shuju b2){\应注意,使用结构体的sort排序时,不能将该算法直接使用,而是需要将该结构体的compare排序函数另行写出,详情可参见网上struct排序模板
    	if(b1.x==b2.x){
    		return b1.y<b2.y;
    	}
    	else{
    		return b1.x<b2.x;
    	}
    }
    int main()
    {
    	int n,i;
    	cin>>n;
    	for(i=0;i<n;i++){
    		cin>>student[i].x>>student[i].y;
    	}
    	sort(student+0,student+n,compare);//调用struct排序函数,排序完毕之后,直接取第一组行列数据即可!
    	cout<<student[0].x<<" "<<student[0].y<<endl;
    	return 0;
    }
    
    

    4.运行正确截图:

    试题二.查找第k小数
    查找一个数组的第K小的数,注意同样大小算一样大。 如 2 1 3 4 5 2 第三小数为3。
    输入描述:
    输入有多组数据。
    每组输入n,然后输入n个整数(1<=n<=1000),再输入k。
    输出描述:
    输出第k小的整数。
    示例1
    输入

    6
    2 1 3 5 2 2
    3
    

    输出

    3
    

    2.分析:起初想到的是使用排序将一组数据处理完毕,并直接将第k个数字输出即可,然而发现的问题即--一旦有重复数据,就需要考虑到去重条件,因此还需要多加思考!
    3.执行代码

    #include<iostream>
    #include<stdlib.h>
    #include<algorithm>
    using namespace std;
    int main()
    {
    	int n,i,a[100];
    	cin >> n;
    	for (i = 0; i < n; i++) {
    		cin >> a[i];
    	}
    	sort(a + 0, a + n);
    	int t;
    	cin >> t;//输入要查找的第k个小数
    	{
    		
    		for (i = 0; i < n; i++) {
    			if (a[i] != a[i - 1]) {//进行去重,一旦发现后一个与前一个不一样大
    				t--;//即使用t对数据进行逐个进行递减地标记,例如测试用例中:排序后为122235,第一个数就用t标记为2,第二个数就用t标记为1,第三个数就用t标记为1,往后同理...到第五个数就用t标记为0
    				if (t == 0) {//到此即符合要查找的第k个数,输出即可
    					cout<<a[i]<<endl;break;
    				}
    			}
    		}
    	}
    }
    

    4.运行正确截图

    试题三.比较奇偶数个数
    第一行输入一个数,为n,第二行输入n个数,这n个数中,如果偶数比奇数多,输出NO,否则输出YES。
    输入描述:
    输入有多组数据。
    每组输入n,然后输入n个整数(1<=n<=1000)。
    输出描述:
    如果偶数比奇数多,输出NO,否则输出YES。
    示例1

    输入
    5
    1 5 2 4 3
    输出
    YES
    

    2.分析:上机题组中最简单的一试题,严重水题,直接附上代码即可!(ps:Java过题)
    3.执行代码

    import java.util.Scanner;
    public class Main {
    	private static Scanner in;
    	public static void main(String[] args) {
    	in=new Scanner(System.in);
        int n,i,x=0,y=0;
        int a[]=new int[100];
        n=in.nextInt();
        for(i=0;i<n;i++) {
        	a[i]=in.nextInt();
        	if(a[i]%2==0) {
        		x++;
        	}
        	else {
        		y++;
        	}
        }
        if(x>y) {
        	System.out.print("NO");
        }
        else if(x<y||x==y) {
        	System.out.print("YES");
        }
    }
    }
    

    4.运行正确截图:

    总共13个题,能做出来的就3道,其余的10个题还在继续努力钻研中~~,第三题是第五次使用Java过题了,顺带熟悉了Java的基本语法,后期继续加油8,关灯 睡觉(~﹃~)~zZ......

  • 相关阅读:
    第三届 山东省ACM省赛
    省赛知识点待整理
    省赛知识点待整理
    最短路模板(Dijkstra & Dijkstra算法+堆优化 & bellman_ford & 单源最短路SPFA)
    最短路模板(Dijkstra & Dijkstra算法+堆优化 & bellman_ford & 单源最短路SPFA)
    最短路模板(Dijkstra & Dijkstra算法+堆优化 & bellman_ford & 单源最短路SPFA)
    hdoj 4883 TIANKENG’s restaurant【贪心区间覆盖】
    hdoj 1072 Nightmare
    hdoj 2141 Can you find it?【二分查找+暴力】
    poj 1064 Cable master【浮点型二分查找】
  • 原文地址:https://www.cnblogs.com/wonzenkei/p/11921012.html
Copyright © 2011-2022 走看看