亲宝软件园·资讯

展开

北邮机试真题2010

疯狂的葡萄 人气:0

写在前面:本人能力有限,以下代码完全为本人自己A出,如有不足之处还请广大网友指点。

网研院

题目1描述

牛客网

输入数组长度 n 输入数组      a[1...n] 输入查找个数m 输入查找数字b[1...m]   输出 YES or NO  查找有则YES 否则NO 。

输入描述:

输入有多组数据。
每组输入n,然后输入n个整数,再输入m,然后再输入m个整数(1<=m,n<=100)。

输出描述:

如果在n个数组中输出YES否则输出NO。
示例1

输入

5
1 5 2 4 3
3
2 5 6

输出

YES
YES
NO

#include<stdio.h>

int main(){
    int n,m;
    while(scanf("%d",&n)!=EOF){
        
        int buf1[n];
        for(int i=0;i<n;i++){
            scanf("%d",&buf1[i]);
            
        }
        
        scanf("%d",&m);
        
        int buf2[m];
        
        for(int i=0;i<m ;i++){
            scanf("%d",&buf2[i]);
            
        }
        
        for(int i=0;i<m;i++){
            
            for(int j=0;j<n;j++){
                if(buf2[i]==buf1[j]){
                    printf("YES\n");
                    break;
                }
                if(j==n-1){
                    printf("NO\n");
                }
            }
        }        
        
        
    }
    
    return 0;
}

 

题目2描述

牛客网

查找一个数组的第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

 

#include<stdio.h>
#include<algorithm>
#include<cstring>

using namespace std;

bool mark[10001];

int num[10001];

int main(){
    int n;
    while(scanf("%d",&n)!=EOF){
    memset(mark,0,sizeof(mark));
    
    int size=0;
    for(int i=0;i<n;i++){
        int t;
        scanf("%d",&t);
        
        if(mark[t]==false){
            mark[t]=true;
            num[size++]=t;
        }
        
        
    }        
    
    sort(num,num+size);
    int m;
    scanf("%d",&m);
    
    printf("%d\n",num[m-1]);    
        
    }
    return 0;
}

题目3描述

牛客网

牌只有1到9,手里拿着已经排好序的牌a,对方出牌b,用程序判断手中牌是否能够压过对方出牌。  规则:出牌牌型有5种   [1]一张 如4 则5...9可压过 [2]两张 如44 则55,66,77,...,99可压过 [3]三张 如444 规则如[2] [4]四张 如4444 规则如[2] [5]五张 牌型只有12345 23456 34567 45678 56789五个,后面的比前面的均大。

输入描述:

输入有多组数据。
每组输入两个字符串(字符串大小不超过100)a,b。a字符串代表手中牌,b字符串代表出的牌。

输出描述:

压过输出YES 否则NO。
示例1

输入

12233445566677
33

输出

YES
#include<stdio.h>
#include<iostream>
#include<string>

using namespace std;
int  buf[10];
int main(){
    string s1, cp;

    cin>>s1;    
    cin>>cp;
    for(int i=0;i<10;i++)
        buf[i]=0;
    
    for(int i=0;i<s1.size();i++){
        int t=s1[i]-'0';
        buf[t]++;
        
    }
    
    bool t=false;
    
    switch (cp.size()){
        case 1:{
            for(int i=0;i<s1.size();i++){
                if(s1[i]>cp[0]){
            
                    printf("YES\n");
                    t=true;
                    break;
                }    
            }
            break;
        }
        case 2:{
            for(int i=2;i<10;i++){
                if(cp[0]<i+'0'&&buf[i]>=2){
            
                    printf("YES\n");
                    t=true;
                    break;
                }
            }
            
            break;
        }
        case 3:{
            for(int i=2;i<10;i++){
                if(cp[0]<i+'0'&&buf[i]>=3){
            
                    printf("YES\n");
                    t=true;
                    break;
                }
            }
            
            break;
        }
        case 4:{
            for(int i=2;i<10;i++){
                if(cp[0]<i+'0'&&buf[i]>=4){
            
                    printf("YES\n");
                    t=true;
                    break;
                }
            }
            break;
        }
        case 5:{
            for(int i=2;i<6;i++){
                if(cp[0]<i+'0'&&buf[i]>=1&&buf[i+1]>=1&&buf[i+2]>=1&&buf[i+3]>=1&&buf[i+4]>=1){
            
                    printf("YES\n");
                    t=true;
                    break;
                }
            }
            
            break;
        }
        
    }
    if(t==false)
        printf("NO");
    
    return 0;
}

题目4描述

牛客网

有一棵树,输出某一深度的所有节点,有则输出这些节点,无则输出EMPTY。该树是完全二叉树。

输入描述:

输入有多组数据。
每组输入一个n(1<=n<=1000),然后将树中的这n个节点依次输入,再输入一个d代表深度。

输出描述:

输出该树中第d层得所有节点,节点间用空格隔开,最后一个节点后没有空格。
示例1

输入

4
1 2 3 4
2

输出

2 3
#include<stdio.h>
#include<cstring>

int buf1[1001];

int fun(int x,int q){
    if(q==0)return 1;
    int ans=1;
    for(int i=0;i<q;i++){
        ans*=x;
    }
    return ans;
}

int main(){
    int n;
    while(scanf("%d",&n)!=EOF){
        
        memset(buf1,0,sizeof(buf1));
        
        for(int i=0;i<n;i++){
            scanf("%d",&buf1[i]);
            
        }
        
        int d,t;
        scanf("%d",&d);
        int i=fun(2,d-1)-1;
        t=fun(2,d)-1;
        for(;i<t&&buf1[i]!=0;i++){
            printf("%d",buf1[i]);
            if(i+1<=t&&buf1[i+1]!=0)
            printf(" ");
        }
        if(n<i)printf("EMPTY");
        
        printf("\n");
    }
    return 0;
}

 

加载全部内容

相关教程
猜你喜欢
用户评论