2014北邮计算机考研复试上机题解(上午+下午) A.众数-计算机一2014 B. 旋转图像-计算机一2014

据江湖传闻,2014年计算机机试分为了上午、下午两批。


先来看上午的题目。

2014北邮计算机考研复试上机题解(上午+下午)

A.众数-计算机一2014

B. 旋转图像-计算机一2014

题目地址:A.众数-计算机一2014

直接统计就可以。

AC代码:

#include<iostream>
#include<cstdio>
using namespace std;

int a[105];

int main()
{
    int tes;
    int n,i;

    while(~scanf("%d",&tes))
    {
        while(tes--)
        {
            scanf("%d",&n);
            for(i=0; i<n; i++)
                scanf("%d",&a[i]);

            int cnt=1;   //记录出现的次数
            int res,ans=0;
            for(i=1; i<n; i++)
            {
                if(a[i]!=a[i-1])
                {
                    if(cnt>ans)
                    {
                        ans=cnt;
                        res=a[i-1];
                    }
                    cnt=1;
                }
                else
                    cnt++;
            }
            if(cnt>ans)   //最后一个数还没推断
            {
                ans=cnt;
                res=a[i-1];
            }
            printf("%d
",res);
        }
    }
    return 0;
}

/*
2
4
1 1 1 2
5
1 1 2 2 3
*/

B. 旋转图像-计算机一2014

2014北邮计算机考研复试上机题解(上午+下午)

A.众数-计算机一2014

B. 旋转图像-计算机一2014

题目地址:B. 旋转图像-计算机一2014


解题思路:

我们能够简化思路,写一个旋转90度的函数。假设选择180度则运行两次,270度。则运行三次。。

PS:记得交换m,n。


AC代码:

#include<iostream>
#include<cstdio>
using namespace std;

char a[55][55];
char b[55][55];
int m,n;

void rotate()
{
    int i,j;
    for(i=0; i<m; i++)   //顺时针旋转90度后保存到b数组里
    {
        for(j=0; j<n; j++)
            b[j][m-1-i]=a[i][j];
    }
    for(i=0; i<n; i++)   //保存回a数组
    {
        for(j=0; j<m; j++)
            a[i][j]=b[i][j];
        a[i][j]='