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

先来看上午的题目。

A.众数-计算机一2014

直接统计就可以。

AC代码:

#include

#include

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

scanf("%d",&a[i]);

int cnt=1; //记录出现的次数

int res,ans=0;

for(i=1; 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\n",res);

}

}

return 0;

}

/*

2

4

1 1 1 2

5

1 1 2 2 3

*/

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

解题思路:

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

PS:记得交换m,n。

AC代码:

#include

#include

using namespace std;

char a[55][55];

char b[55][55];

int m,n;

void rotate()

{

int i,j;

for(i=0; i

{

for(j=0; j

b[j][m-1-i]=a[i][j];

}

for(i=0; i

{

for(j=0; j

a[i][j]=b[i][j];

a[i][j]='\0';

}

int tmp=m; //记得交换m,n

m=n;

n=tmp;

}

int main()

{

int tes;

int i,j;

while(~scanf("%d",&tes))

{

while(tes--)

{

scanf("%d%d",&m,&n);

for(i=0; i

scanf("%s",a[i]);

int d;

scanf("%d",&d);

d=d/90; //推断要旋转的次数

while(d--)

rotate();

for(i=0; i

printf("%s\n",a[i]);

}

}

return 0;

}

/*

2

2 3

111

000

90

3 3

111

101

111

180

*/

C. 网络的核-计算机一2014

解题思路:

这题的思路就是先用floyd求出随意两点的最短距离。然后看哪个点事要求的点。

PS:记得floyd的顺序是k,i,j。表示初试的时候大题i,j,k顺序写错了。。

AC代码:

#include

#include

#define maxn 55

using namespace std;

int m,n;

int dis[maxn][maxn];

void floyd() //floyd的顺序k,i,j

{

int i,j,k;

for(k=1; k<=n; k++)

for(i=1; i<=n; i++)

for(j=1; j<=n; j++)

{

if(dis[i][j]>dis[i][k]+dis[k][j])

dis[i][j]=dis[i][k]+dis[k][j];

}

}

int main()

{

int tes;

int i,j;

while(~scanf("%d",&tes))

{

while(tes--)

{

scanf("%d%d",&n,&m);

for(i=1; i<=n; i++) //初试化

{

for(j=1; j<=n; j++)

dis[i][j]=n;

dis[i][i]=0;

}

int a,b;

for(i=0; i

{

scanf("%d%d",&a,&b);

dis[a][b]=dis[b][a]=1;

}

floyd();

int res,mi=100000000;

for(i=1; i<=n; i++) //统计每一个点到其它全部点的距离和,选最小的

{

int tt=0;

for(j=1; j<=n; j++)

{

tt+=dis[i][j];

}

if(tt

{

mi=tt;

res=i;

}

}

printf("%d\n",res);

}

}

return 0;

}

/*

2

3 3

1 2

1 3

2 3

4 2

1 2

2 3

*/

D. Python List-计算机一2014

解题思路:

先分析题目大意。总共同拥有四种操作。

a=[]

a.sort()

a.append(int)

a.[int]

用一个map将list的名字和数组下标相应,然后分析每一个操作。详见代码。

AC代码:

#include

#include

#include

#include

#define maxn 105

using namespace std;

int a[maxn][maxn]; //a[t]表示list映射到t的数组

int len[maxn]; //len[t]表示list映射到t的长度

map mq;

int main()

{

int tes,n,i,j;

char str[maxn];

char nam[maxn];

while(~scanf("%d",&tes))

{

while(tes--)

{

scanf("%d",&n);

mq.clear();

memset(len,0,sizeof(len));

int t=0,x;

int l;

while(n--)

{

scanf("%s",str);

l=strlen(str);

if(str[l-1]==']')

{

if(str[l-2]=='[') //.[]

{

for(i=0; i

{

if(str[i]=='=')

break;

nam[i]=str[i];

}

nam[i]='\0'; //获取list的名字

//printf("%s\n",nam);

if(!mq[nam])

{

mq[nam]=t;

len[t]=0;

t++;

}

else

{

len[mq[nam]]=0;

}

}

else //.[int]

{

for(i=0; i

{

if(str[i]=='[')

break;

nam[i]=str[i];

}

nam[i]='\0'; //获取list的名字

int d=0; //得到int的值

i++;

for(i; i

{

d=d*10+(str[i]-'0');

}

x=mq[nam];

//cout<

if(len[x]<=d)

{

printf("ERROR\n");

}

else

{

printf("%d\n",a[x][d]);

}

}

}

else

{

if(str[l-2]=='(') //.sort()

{

for(i=0; i

{

if(str[i]=='.')

break;

nam[i]=str[i];

}

nam[i]='\0'; //获取list的名字

x=mq[nam];

int tmp;

for(i=0; i

{

for(j=i+1; j

{

if(a[x][i]>a[x][j])

{

tmp=a[x][i];

a[x][i]=a[x][j];

a[x][j]=tmp;

}

}

}

}

else

{

for(i=0; i

{

if(str[i]=='.')

break;

nam[i]=str[i];

}

nam[i]='\0'; //获取list的名字

x=mq[nam];

int d=0; //得到int的值

i+=8;

for(i; i

{

d=d*10+(str[i]-'0');

}

a[x][len[x]]=d;

len[x]++;

}

}

}

}

}

return 0;

}

/*

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]

listb=[]

listb[0]

*/

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

再来看看下午的题目。

A. 中位数-计算机二2014

解题思路:

n分奇数和偶数讨论,

假设是奇数,直接输出下标为(n/2+1)就可以(我是下标从1開始的)

假设是偶数,输出n/2与n/2+1和的一半就可以。只是因为输出时要控制不要末尾的0。因为数组里都是int,能够把结果放大10倍,假设能够被10整除。输出int就可以。否则输出一位小数(仅仅能是.5)

AC代码:

#include

#include

#include

#include

#define maxn 105

using namespace std;

int a[maxn];

int main()

{

int tes,n,i;

while(~scanf("%d",&tes))

{

while(tes--)

{

scanf("%d",&n);

for(i=1; i<=n; i++)

scanf("%d",&a[i]);

if(n%2==1)

printf("%d\n",a[n/2+1]);

else

{

int t = ((double(a[n/2])+a[n/2+1])/2)*10; //把结果放大10倍

if(t%10==0)

printf("%d\n",t/10);

else

printf("%.1f\n",double(t)/10);

}

}

}

return 0;

}

/*

2

4

1 1 2 2

5

1 1 2 2 3

*/

B. 内存分配-网妍14-计算机二14

解题思路:

因为是最佳适应。能够把最開始的内存依照从小到大排序。然后设立一个vis訪问数组。

每次新来一个就从从开头遍历这个数组,找到第一个>=这个值,而且vis为0(未使用)的。然后把vis置1。详见代码

AC代码:

#include

#include

#include

#include

#define maxn 105

using namespace std;

int a[maxn];

int vis[maxn];

int main()

{

int tes,n,m,i,j;

while(~scanf("%d",&tes))

{

while(tes--)

{

scanf("%d",&n);

for(i=0; i

scanf("%d",&a[i]);

sort(a,a+n); //从小到大排序

memset(vis,0,sizeof(vis)); //vis初始化为0

scanf("%d",&m);

int flag,d;

for(j=0; j

{

if(j>0) printf(" ");

flag=0;

scanf("%d",&d);

for(i=0; i

{

if(a[i]>=d&&!vis[i]) //找到第一个>=d而且未使用的

{

vis[i]=1;

printf("%d",a[i]);

flag=1;

break;

}

}

if(!flag) //没找到,输出NULL

printf("NULL");

}

printf("\n");

}

}

return 0;

}

/*

2

4

7 5 10 3

2

4 6

4

3 5 9 10

3

5 12 6

*/

C. 图像识别-计算机二2014

解题思路:

这个就是个dfs的题目,从一个点出发。能够把他周围的八个方向的点满足条件的都遍历了。假设能够他们就是一类。继续搜。

AC代码:

#include

#include

#include

#include

#define maxn 105

using namespace std;

int m,n,d;

int a[maxn][maxn];

int vis[maxn][maxn];

int dir[8][2]= {{-1,-1},{-1,0},{-1,1},{0,-1},{0,1},{1,-1},{1,0},{1,1}}; //八个方向

int ab(int p)

{

if(p<0)

p=0-p;

return p;

}

void dfs(int x,int y)

{

int i,cx,cy;

for(i=0; i<8; i++)

{

cx=x+dir[i][0];

cy=y+dir[i][1];

if(cx>=0&&cx=0&&cy

{

vis[cx][cy]=1;

dfs(cx,cy);

}

}

return;

}

int main()

{

int tes,i,j;

while(~scanf("%d",&tes))

{

while(tes--)

{

scanf("%d%d%d",&m,&n,&d);

for(i=0; i

{

for(j=0; j

{

scanf("%d",&a[i][j]);

vis[i][j]=0;

}

}

int res=0;

for(i=0; i

{

for(j=0; j

{

if(!vis[i][j])

{

res++;

vis[i][j]=1;

dfs(i,j);

}

}

}

printf("%d\n",res);

}

}

return 0;

}

/*

2

3 3 0

1 1 1

0 1 0

0 1 0

3 4 1

10 11 12 13

9 8 7 6

2 3 4 5

*/

D. 汇编-计算机二2014

解题思路:

先分析题目大意。总共同拥有两种操作。

ADD

MOV

逗号之前是AX,AL,AH这个分三类讨论。我把AX,BX,CX,DX的值存到了一个数组里。

分别相应a[0,1,2,3]

这样方便处理。

逗号之后须要分情况讨论,一种是AX,AL,AH这样的。另一种就是二进制,十六进制,十进制的数这样的。把这个结果保存到tmp就可以。详见代码。

AC代码:

#include

#include

#include

#include

#define maxn 105

using namespace std;

int m,n,d;

int a[4];

char str[maxn];

char op[maxn];

int main()

{

int tes,n,i;

while(~scanf("%d",&tes))

{

while(tes--)

{

scanf("%d",&n);

memset(a,0,sizeof(a));

while(n--)

{

scanf("%s",op);

scanf("%s",str);

int len=strlen(str);

int t=str[0]-'A';

int tmp=0;

if(str[len-1]=='X'||str[len-1]=='L'||(str[len-1]=='H'&&str[3]!='0'))

{ //逗号之后的数假设是AX,AL,AH之类的

int t2=str[len-2]-'A';

if(str[len-1]=='X')tmp=a[t2];

else if(str[len-1]=='L') tmp=a[t2]%256;

else tmp=a[t2]/256;

}

else //逗号之后的数假设是二进制,十进制。十六进制的

{

int d;

if(str[len-1]=='H') //十六进制

d=16;

else if(str[len-1]=='B') //二进制

d=2;

else //十进制

{

len++;

d=10;

}

int x;

for(i=3; i

{

if(str[i]>='0'&&str[i]<='9')

x=str[i]-'0';

else

x=str[i]-'A'+10;

tmp=tmp*d+x;

}

}

if(strcmp(op,"MOV")==0) //假设是MOV

{

if(str[1]=='X')a[t]=tmp;

else if(str[1]=='L') a[t]=a[t]/256*256+tmp;

else a[t]=a[t]%256+tmp*256;

}

else //假设是ADD

{

if(str[1]=='X')a[t]+=tmp;

else if(str[1]=='L') a[t]+=tmp;

else a[t]=a[t]+tmp*256;

}

}

printf("%d %d %d %d\n",a[0],a[1],a[2],a[3]);

}

}

return 0;

}

/*

2

3

MOV AX,2

MOV BX,3

ADD AX,BX

5

MOV AX,2

MOV BX,030H

MOV CX,11B

ADD AX,CX

ADD DL,CL

*/

计算机考研用python_2014北邮计算机考研复试上机题解(上午+下午)相关推荐

  1. 北邮计算机考研专业课分值,北邮计算机考研分数线

    北邮计算机考研分数线?细节决议胜败,这是很多人都明白的道理,但详细到咱们的行动上可即是另一码事了.在高考的道路上,分数决议一切的思想在考生们心里根深柢固.但是咱们可知道,除了分数,很多填写志愿上的细枝 ...

  2. 2017北邮计算机考研经验总结,北邮计算机专考研经验总结.docx

    北邮计算机专考研经验总结 我把我的考研经历分为三个阶段来讲述. 第一.备考阶段: 我是大三下学期的实习结束后开始复习,也就是4月份,最先开始的是英语单词和高数课本的复习,由于大三下学期还有课,所以进度 ...

  3. 北邮计算机系统结构实验报告,北邮计算机体系结构--实验报告.doc

    计算机系统结构实验报告 班 级: 2011211 学 号: 姓 名: 17 1. 实验一 WINDLX模拟器安装及使用 2. 实验二 指令流水线相关性分析 3. 实验三 DLX处理器程序设计 4. 实 ...

  4. 北邮计算机科学技术是学硕吗,【计算机考研】2020北京邮电大学计算机科学与技术考研初试科目、参考书目、复试详情汇总...

    原标题:[计算机考研]2020北京邮电大学计算机科学与技术考研初试科目.参考书目.复试详情汇总 一.考试科目 计院的学硕是计算机科学与技术,专硕为计算机技术. 计算机科学与技术: ①101思想政治理论 ...

  5. 21考研复习规划和北邮计算机考研介绍

    21考研复习规划和北邮计算机考研报名,学院,导师选择 同学让我给你介绍一下北邮计算机类专业考研的情况. 北邮共有四个学院都属于计算机类的,分为两大类,一类是考专业课803,另一类是考807,803包括 ...

  6. 北邮计算机学院专业分析,2019-2021北京邮电大学考研数据分析

    北京邮电大学近三年考研数据分析 一.信息与通信工程学院 2019年拟招生1025人,2020年拟招生810人,2021拟招生648人.近三年信息与通信工程学院招生人数有所减少,而且原信息与通信工程学院 ...

  7. 【考研经验】2018北邮计算机学院考研经验(复试经验较多)

    原文作者  yycg 点击原文链接,可进入原帖. 现在分享一下我的经验,希望对学弟学妹们有所帮助. 初试 初试成绩不高,总分330+.我是某电类专业跨考的. 暑假七八月份在家,一边准备考研一边准备工作 ...

  8. 北邮计算机上岸日记+春招面经

    2020极限一批次上岸北邮计算机学院计算机科学与技术.政治62,数学一83,英语70,专业课101 运气成分挺大的,是一批次计院学硕的最低分了,一度以为自己上不了.316刚超过院线1分,相比今年2组一 ...

  9. 北邮计算机学院课程学习资源汇总

    北邮计算机学院学习资源汇总 高数 [视频]bilibili宋浩(可爱又闷骚的老师,视频整体比较长,高数上.下的都是全的,讲的也很细,课的话看着一个就够了) [资料]吉米多维奇(yyds的习题书,我高数 ...

最新文章

  1. 一年春事,桃花红了谁……
  2. 0523-学习进度条
  3. android tween动画效果
  4. sql 分组后按时间降序排列再取出每组的第一条记录
  5. ci mysql高并发_高并发访问mysql时的问题(一):库存超减
  6. Websocket判断逻辑Bug
  7. 自动化构建之bower
  8. 代码分析-DataGrid实现自增列、单选、多选
  9. 2017⇆2019,用了这款减肥App,我胖了30斤...
  10. python中np.reshape与matlab中reshape区别,以及多axis的np.mean分析[探索6]
  11. python修改txt里面的内容_python修改txt部分内容,并保存。
  12. 分布式和微服务_太难了!阿里三面凉透~ Spring+高并发+算法+分布式微服务等等一个都没讲不清...
  13. mysql脚本之家_详细讲述MySQL中的子查询操作 (来自脚本之家)
  14. 浏览器网页操作 EXCEL 示例
  15. VS2012 打开项目后无法编辑
  16. 基于FPGA的AD9854并行接口驱动(VerilogHDL语言)
  17. 重装win10系统(家庭版和专业版)
  18. 《日瓦戈医生》读后感
  19. python+selenium+chrome实现淘宝购物车秒杀自动结算
  20. 服务器配置jdk环境

热门文章

  1. 学生宿舍管理系统c语言程序设计,学生宿舍管理系统C语言编程.doc
  2. 【css设置滚动条粗细】
  3. 学习pathon的几大步骤
  4. Who do you think is the best coder, and why?
  5. 深圳学校积分计算机,深圳市龙岗区小学积分入学排行榜
  6. timesat数据如何读取_判二手车调表车另类方法。如何利用OBD读取可靠数据(技术类)...
  7. SpringBoot + Element UI 楠橘星后台管理系统一键打包部署教程文档
  8. 炒股魅力:数据分析侠变身“赚钱机器”
  9. 滴滴 2019校园招聘笔试编程题-2018.09.18
  10. Android面试题【高级工程师版】