2014年北京邮电大学计算机考研机试试题及答案(上午)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_38262266/article/details/87903747

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int T;
    scanf("%d",&T);
    while(T--)
    {
        int N;
        scanf("%d",&N);
        int a[N];
        int b[100001];
        memset(b,0,sizeof(b));

        for(int i=0;i<N;i++)
        {
            scanf("%d",&a[i]);
            b[a[i]]++;
        }

        int min_num=0;
        int key=100001;
        for(int i=0;i<100001;i++)
        {
            if(b[i]!=0&&b[i]>min_num)
            {
                min_num = b[i];
                key = i;
            }
            if(b[i]!=0&&b[i]==min_num&&i<key)
            {
                key = i;
            }
        }
        printf("%d\n",key);
    }
    return 0;
}

#include<bits/stdc++.h>
using namespace std;
/*
看似麻烦,其实只需写出来旋转90度的就可以,180度的旋转两遍,270三遍即可
2
2 3
111
000
90
3 3
111
101
111
180
*/

void visit(char a[][51],int N,int M)
{
    for(int i=0; i<N; i++)
    {
        for(int j=0; j<M; j++)
        {
            cout<<a[i][j];
        }
        cout<<endl;
    }
}

int main()
{
    int T;
    cin>>T;
    while(T--)
    {
        int N,M;
        cin>>N>>M;
        char a[51][51];
        for(int i=0; i<N; i++)
        {
            for(int j=0; j<M; j++)
            {
                cin>>a[i][j];
            }
        }
        int angle;
        scanf("%d",&angle);
        if(angle==0)
        {
            visit(a,N,M);
        }
        if(angle==90)
        {
            char b[M][N];
            for(int i=0; i<N; i++)
            {
                for(int j=0; j<M; j++)
                {
                    b[j][N-i-1] = a[i][j];
                }
            }
            for(int i=0; i<M; i++)
            {
                for(int j=0; j<N; j++)
                {
                    cout<<b[i][j];
                }
                cout<<endl;
            }
        }
        if(angle==180)
        {
            char b[M][N];
            for(int i=0; i<N; i++)
            {
                for(int j=0; j<M; j++)
                {
                    b[j][N-i-1] = a[i][j];
                }
            }
            char c[N][M];
            for(int i=0; i<M; i++)
            {
                for(int j=0; j<N; j++)
                {
                    c[j][M-i-1] = b[i][j];
                }
            }

            for(int i=0; i<N; i++)
            {
                for(int j=0; j<M; j++)
                {
                    cout<<c[i][j];
                }
                cout<<endl;
            }
        }
        if(angle==270)
        {
            char b[M][N];
            for(int i=0; i<N; i++)
            {
                for(int j=0; j<M; j++)
                {
                    b[j][N-i-1] = a[i][j];
                }
            }
            char c[N][M];
            for(int i=0; i<M; i++)
            {
                for(int j=0; j<N; j++)
                {
                    c[j][M-i-1] = b[i][j];
                }
            }
            char d[M][N];
            for(int i=0; i<N; i++)
            {
                for(int j=0; j<M; j++)
                {
                    d[j][N-i-1] = c[i][j];
                }
            }
            for(int i=0; i<M; i++)
            {
                for(int j=0; j<N; j++)
                {
                    cout<<d[i][j];
                }
                cout<<endl;
            }
        }
    }
    return 0;
}

#include<bits/stdc++.h>
using namespace std;
/*
floyd算法
2
3 3
1 2
1 3
2 3
4 2
1 2
2 3
*/
int main()
{
    int T;
    scanf("%d",&T);
    while(T--)
    {
        int N,M;
        scanf("%d%d",&N,&M);
        int a[N+1][N+1];
        //定义初值
        for(int i=1;i<=N;i++)
        {
            for(int j=1;j<=N;j++)
            {
                a[i][j]=N;
            }
        }
        //赋最基本值
        while(M--)
        {
            int u,v;
            scanf("%d%d",&u,&v);
            a[u][v] = 1;
            a[v][u] = 1;
        }
        //利用floyd算法更新路径数组
        for(int k=1;k<=N;k++)
        {
            for(int i=1;i<=N;i++)
            {
                for(int j=1;j<=N;j++)
                {
                    if(a[i][k]+a[k][j]<a[i][j])
                        a[i][j] = a[i][k]+a[k][j];
                }
            }
        }
        //更新路径数组后,再次寻找中心节点
        int min_point;
        int min_value=0;
        int max_define=10000000;
        for(int i=1;i<=N;i++)
        {
            for(int j=1;j<=N;j++)
            {
                min_value+=a[i][j];
                //cout<<"min_value: "<<min_value<<" max_value"<<max_define<<endl;
            }
            if(min_value<max_define)
            {
                max_define = min_value;
                min_point = i;
                //cout<<"min_value: "<<min_value<<endl;
            }
            min_value=0;
        }
        printf("%d\n",min_point);
    }
    return 0;
}

#include<bits/stdc++.h>
using namespace std;
/*
2
5
a=[]
a.append(0)
a.append(1)
a[0]
a[1]
8
lista=[]
lista.append(123)
lista.append(65)
lista[0]
lista.sort()
lista[0]
lista[]
listb[0]
*/
int string_to_int(string s)
{
    int num = 0;
    int len = s.length();
    for(int i=len-1; i>=0; i--)
    {
        int key = 1;
        int t = i;
        while(t--)
        {
            key*=10;
        }
        num+=(s[len-i-1]-'0')*key;
    }
    return num;
}

int main()
{
    int T;
    scanf("%d",&T);
    while(T--)
    {
        int N;
        scanf("%d",&N);
        int a[N];
        int add_num=0;
        while(N--)
        {

            string s;
            cin>>s;
            int len = s.length();
            //清空
            if(s[len-1]==']'&&s[len-2]=='[')
            {
                memset(a,0,sizeof(a));
                add_num=0;
                continue;
            }
            //sort
            if(s[len-1]==')'&&s[len-2]=='(')
            {
                sort(a,a+add_num);
            }
            //a.append(0)
            int get=0;
            string s2="";
            if(s[len-1]==')'&&s[len-2]!='(')
            {
                for(int i=0; i<s.length(); i++)
                {
                    if(s[i]==')')
                    {
                        get=0;
                    }
                    if(get==1)
                    {
                        s2+=s[i];
                    }
                    if(s[i]=='(')
                    {
                        get=1;
                    }
                }
                int add_value = string_to_int(s2);
                //cout<<"add_value: "<<add_value<<endl;
                a[add_num]=add_value;
                //cout<<"---->a["<<add_num<<"]="<<add_value<<endl;
                add_num++;
            }
            //a[0]
            int get2=0;
            string s3="";
            if(s[len-1]==']'&&s[len-2]!='[')
            {
                for(int i=0; i<s.length(); i++)
                {
                    if(s[i]==']')
                    {
                        get2=0;
                    }
                    if(get2==1)
                    {
                        s3+=s[i];
                    }
                    if(s[i]=='[')
                    {
                        get2=1;
                    }
                }
                int index = string_to_int(s3);
                if(index>add_num||add_num==0)
                {
                    printf("ERROR\n");
                }
                else
                {
                    printf("%d\n",a[index]);
                }
            }
        }
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_38262266/article/details/87903747