2015北邮计算机考研复试上机题解
第一题:求导数
描述:求函数f(x) = a*x^3 + b*x^2 + c*x + d在x = x0处的一阶导数。
输入:a b c d x0。
输出:f'(x0)。
样例输入:1 1 1 1 1
样例输出:6
直接输出3ax*x+2bx+c即可。
代码:
#include<iostream>
using namespace std;int main()
{int tes;while(cin>>tes){int a,b,c,d,x0;while(tes--){int res;cin>>a>>b>>c>>d>>x0;res=3*a*x0*x0+2*b*x0+c;cout<<res<<endl;}}return 0;
}/*
5
1 1 1 1 1
*/
第二题:LIST
描述:在该LIST上实现3种操作
1、append x在该LIST末尾添加x,x是32位整数
2、pop删除该LIST末尾的数
3、find i寻找第i个数,若i为负数表示寻找倒数第i个数,例如i = -1表示寻找倒数第一个
输入:第一行输入一个m,表示有m条操作,接下来每行输入一条操作
输出:输出find i找到的数
直接数组模拟即可:
代码:
#include<iostream>
#include<cstring>
#define maxn 1005
using namespace std;
int a[maxn];int main()
{int tes;char tmp[15];while(cin>>tes){int m;while(tes--){cin>>m;int len=0;int d;while(m--){cin>>tmp;if(strcmp(tmp,"append")==0){cin>>d;a[++len]=d;}else if(strcmp(tmp,"find")==0){cin>>d;if(d>0){cout<<a[d]<<endl;}else{d=-d;cout<<a[len+1-d]<<endl;}}elselen--;}}}return 0;
}/*
2
5
append 1
append 2
find 1
find -1
pop
6
append 1
append 2
append 3
append 4
find -2
find 2
*/
第三题:图像压缩存储
描述:以二维数组表示图像,其值只有0、1两种,寻找两幅图像中最大的相同部分
输入:第一行输入一个n,接下来的2n行输入两个n * n数组,寻找一个最大的m * m子区域,使得两个数组在该子区域完全相同
输出:输出上诉m
样例输入:
4
1 1 1 1
1 1 1 0
1 1 1 0
1 1 1 1
0 1 1 1
0 1 1 1
0 1 1 1
0 1 1 0
样例输出:
2
解释:上诉两个4阶数组中的一个2阶子区域(第1、2行,第2、3列完全相同)
题目大意:题目所要求的是两个矩阵最大的相同部分。
解题思路:
可以将两个矩阵直接异或(^)出来。
0异或0等于0
1异或1等于0
0异或1等于1
(相同异或为0,不同异或为1)
两个矩阵异或之后取非。
然后题目就变成了求第三个矩阵里的最大的为1的方阵。
我们可以采用动态规划的思想。
首先从左到右遍历一次寻找每个点可以向左延伸到最远的距离。
然后从上到下遍历一次寻找每个点可以向上延伸到最远的距离。
最后直接从左上角到右下角。看直接能到最左上角的距离。
就是每个点可以延伸最大的方阵的边长。
代码:
#include<iostream>
#include<cstring>
#define maxn 1005
using namespace std;
int a[maxn][maxn];
int dp1[maxn][maxn]; //从左到右
int dp2[maxn][maxn]; //从上到下
int dp3[maxn][maxn]; //从左上角到右下角
int n;int mi(int a,int b)
{if(a<b) return a;return b;
}int ma(int a,int b)
{if(a<b) return b;return a;
}int main()
{int tes;int i,j;while(cin>>tes){while(tes--){cin>>n;for(i=1; i<=n; i++)for(j=1; j<=n; j++)scanf("%d",&a[i][j]);int tmp;for(i=1; i<=n; i++)for(j=1; j<=n; j++){scanf("%d",&tmp);a[i][j]=!(a[i][j]^tmp);}for(i=1; i<=n; i++){dp1[i][0]=0;for(j=1; j<=n; j++){if(a[i][j]==1)dp1[i][j]=dp1[i][j-1]+1;elsedp1[i][j]=0;}}for(i=1; i<=n; i++){dp2[0][i]=0;for(j=1; j<=n; j++){if(a[j][i]==1)dp2[j][i]=dp2[j-1][i]+1;elsedp2[j][i]=0;}}dp3[0][0]=0;int res=0;for(i=1; i<=n; i++)for(j=1; j<=n; j++){int t=dp3[i-1][j-1];t=mi(t,dp1[i][j-1]);t=mi(t,dp2[i-1][j]);if(a[i][j]==1)dp3[i][j]=t+1;elsedp3[i][j]=0;res=ma(res,dp3[i][j]);}cout<<res<<endl;/*cout<<"*********************"<<endl;for(i=1;i<=n;i++){for(j=1;j<=n;j++){printf("%d",a[i][j]);}printf("\n");}cout<<"*********************"<<endl;for(i=1;i<=n;i++){for(j=1;j<=n;j++){printf("%d",dp3[i][j]);}printf("\n");}*/}}return 0;
}/*
2
4
1 1 1 1
1 1 1 0
1 1 1 0
1 1 1 1
0 1 1 1
0 1 1 1
0 1 1 1
0 1 1 0
*/
第四题:解析表达式
描述:输入一个字符串形式的表达式,该表达式中包括整数,四则运算符(+、-、*、/),括号,三角函数(sin(x)、cos(x)、tan(x)),底数函数(lg(x)、ln(x)),计算该表达式的值
输入:输入一个字符串形式的表达式,保证中间及最终结果不超出double的范围
输出:表达式的值,保留6位小数
样例输入:
3
3+5
((2-1)*5-1)*6
1+cos(0)
sin(sin(1-1))
样例输出:
3.000000
8.000000
24.000000
2.000000
0.000000
据说15年的这个题目当时上机没有一个人AC掉。
然后只有三十多人做出来三道题。
我之前在上数据结构实验课的时候写过类似的一道题目。不过里面没有sin,cos,tan函数。不过我的输入里面可以自带小数。
有兴趣的可以再在代码上改改。不难。
但是在两个小时以内能全部把这4道题AC掉确实有点困难。
代码:
#include<iostream>
#include<cstring>
#include<cmath>
#include<stack>
using namespace std;
int i,j,k,start,end;double to_double(char x[])
{int l;double p=0;if(strlen(x)==1)return (x[0]-'0');int len=strlen(x);int tt=len;for(l=0; l<len; l++)if(x[l]=='.'){tt=l;break;}for(l=0; l<tt; l++)p=p*10+(x[l]-'0');for(l=tt+1; l<len; l++)p+=(x[l]-'0')*pow(0.1,l-tt);return p;
}int prior(char a,char b)
{if((b=='(')||(a=='(')||((a=='+'||a=='-')&&(b=='*'||b=='/')))return 0;else if(((a=='+'||a=='-'||a=='*'||a=='/')&&(b=='+'||b=='-'))||((a=='*'||a=='/')&&(b=='*'||b=='/'))||b==')')return 1;elsereturn 0;
}double calculate(double a,double b,char c)
{if(c=='+')return a+b;else if(c=='-')return a-b;else if(c=='*')return a*b;elsereturn a/b;
}int main()
{char a[1004];while(cin>>a){stack <double> fig;stack <char> cal;int len=strlen(a);for(i=0; i<len; i++){int fg1=0;int fg2=0;while((a[i]>='0'&&a[i]<='9')||a[i]=='.'){if(fg1==0)start=i;fg1=1;end=i;i++;if(i>=len)fg2=1;}if(fg1){char x[104];k=0;for(j=start; j<=end; j++,k++)x[k]=a[j];x[k]='\0';double p=to_double(x);fig.push(p);}if(fg2)break;if(cal.empty()){cal.push(a[i]);continue;}else if(prior(cal.top(),a[i])==0){cal.push(a[i]);continue;}else if(a[i]!=')'&&prior(cal.top(),a[i])==1){double b=fig.top();fig.pop();double a=fig.top();fig.pop();char c=cal.top();cal.pop();double x=calculate(a,b,c);fig.push(x);i--;continue;}else if(a[i]==')'){while(cal.top()!='('){double b=fig.top();fig.pop();double a=fig.top();fig.pop();char c=cal.top();cal.pop();double x=calculate(a,b,c);fig.push(x);}cal.pop();continue;}}while(!(cal.empty())){double b=fig.top();fig.pop();double a=fig.top();fig.pop();char c=cal.top();cal.pop();double x=calculate(a,b,c);fig.push(x);}printf("%.6f\n",fig.top());}return 0;
}/*
3
3+5
((2-1)*5-1)*6
(100-(2.0+4.4)*5)*0-(5*4+2.05-(2+1.0))/2
*/
2015北邮计算机考研复试上机题解相关推荐
- 计算机考研用python_2014北邮计算机考研复试上机题解(上午+下午)
据江湖传闻,2014年计算机机试分为了上午.下午两批. 先来看上午的题目. A.众数-计算机一2014 直接统计就可以. AC代码: #include #include using namespace ...
- 2014北邮计算机考研复试上机题解(上午+下午)
据江湖传闻,2014年计算机机试分为了上午.下午两批. 先来看上午的题目. A.众数-计算机一2014 题目地址:A.众数-计算机一2014 直接统计即可. AC代码: #include<ios ...
- 北邮计算机专业复试题目,2018年北邮计算机院复试上机题目
题目来源:北邮2018计算机院考研复试机试上机题解+结果统计 进制 | 2018.计算机院.Problem A.二进制数字翻转 题目描述 输入数据组数t 每组数据输入一个十进制数x(032),将其二进 ...
- 北邮计算机考研复试往年题目,北邮考研复试笔试题目汇总
[实例简介] 北邮复试笔试的真题 今年考到的原题有很多 包括人工智能,数据库,编译原理,计算机体系结构等真题 [实例截图] [核心代码] 考研资料 └── 考研资料 ├── 2005年复试题目_fil ...
- 2019年北邮计算机院复试上机题目
题目来源:北邮2019计算机院机试真题回忆版 2019.计算机院.Problem A 二进制 题目描述 32位二进制数X,对其进行X+1,X+3 操作,并输出.注意不能忽略前导0.(x<=232 ...
- 计算机考研复试上机算法学习
计算机考研复试上机算法学习 这篇博客是博主在准备可能到来的线下上机复试基于王道机试指南的学习,将各道习题链接和代码记录下来,这篇博客权且当个记录. 文章目录 计算机考研复试上机算法学习 1.STL容器 ...
- 21考研复习规划和北邮计算机考研介绍
21考研复习规划和北邮计算机考研报名,学院,导师选择 同学让我给你介绍一下北邮计算机类专业考研的情况. 北邮共有四个学院都属于计算机类的,分为两大类,一类是考专业课803,另一类是考807,803包括 ...
- 北邮计算机考研专业课分值,北邮计算机考研分数线
北邮计算机考研分数线?细节决议胜败,这是很多人都明白的道理,但详细到咱们的行动上可即是另一码事了.在高考的道路上,分数决议一切的思想在考生们心里根深柢固.但是咱们可知道,除了分数,很多填写志愿上的细枝 ...
- 2017北邮计算机考研经验总结,北邮计算机专考研经验总结.docx
北邮计算机专考研经验总结 我把我的考研经历分为三个阶段来讲述. 第一.备考阶段: 我是大三下学期的实习结束后开始复习,也就是4月份,最先开始的是英语单词和高数课本的复习,由于大三下学期还有课,所以进度 ...
最新文章
- Ascend昇腾计算
- 企业支付宝账号开发接口实现
- 无人机航拍记录生活真爽,包邮送一个!
- matlab 大括号
- python xlrd模块_python之xlrd模块
- python连接postgis_python连接postgres方法
- 元宇宙NFT商城系统|艺术数字藏品平台源码部署
- Nexus3搭建本地仓库
- STM32——新建 Keil MDK 5 工程(寄存器版本)
- origin绘图软件安装包及入门使用
- 深度学习领域专有名词的理解与释义
- cpu功耗排行_最全cpu性能排行榜 cpu性能排行天梯图
- 软件设计师:06-程序设计语言与语言处理程序基础
- 支付宝当面付打shang系统源码分享
- (9) iphone 开发 AppSettings , 系统setting与应用程序setting间的数据控制
- echo的故事(希腊神话山林女神和回声女神)
- SOM-TL437x基于TI Sitara系列ARM Cortex-A9核心板硬件资源
- 为什么要使用堆栈? sp和fp的解释
- python3 将pdf转换成txt
- Springcloud集成 RabbitMQ延时队列
热门文章
- R语言 霍尔特指数平滑法(Holt)
- 入门级动态规划:2018年第九届蓝桥杯省赛B组第四题—测试次数( 摔手机 )
- 文本转语音TTS(文本阅读和视频配音制作)MP3
- teamspeak语音服务器价格,语音聊天社交很热门,带你搭建自己的语音聊天服务器...
- 2018 IDEA Intellij 和 DataGrip的激活方式(至10月)
- Room 使用及初步分析
- BZOJ1001 [BeiJing2006]狼抓兔子 (网络流)
- visual paradigm 绘图学习记录
- Place Holder 方法
- 苹果 iPad 上如何设置和使用蓝牙鼠标?