欢迎来到天天文库
浏览记录
ID:46394554
大小:386.62 KB
页数:29页
时间:2019-11-23
《北航计算机系考研复试上机真题及答》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、Kao400.com出品侵权必究北京航空航天大学计算机系考研复试06‐12上机真题及答案复试上机指导1.本真题只是提供辅助作用,关键还是研友平时动手能力练习和对算法、数据结构的理解,参加过ACM的有一定优势没参加过的也不用紧张,北航的上机题相对于清华和北大,难度上小很多,多练习的话,问题不大;2.上机时,可以快速阅读所有的题目,按照从易到难的次序做题,保证会的一定得分;3.熟悉编程环境,熟悉c的常用函数;4.为了快速测试代码的正确性,尤其是矩阵输入的情况,可以利用标准输入重定向,freopen(“c:\input.txt”
2、,”r”,stdin);加快测试过程;5.注意程序边界条件的测试;6.如果你有什么疑问,或者我们提供的材料有问题,欢迎联系我们:bwiunbuaa@163.com提供北航计算机报考和选导师指导,或者到kao400.com给我们留言。Kao400.com出品侵权必究12年上机题1.【问题描述】某些整数能分解成若干个连续整数的和的形式,例如15=1+2+3+4+515=4+5+615=7+8某些整数不能分解为连续整数的和,例如:16输入:一个整数N(N<=10000)输出:整数N对应的所有分解组合,按照每个分解中的最小整数从小到
3、大输出,每个分解占一行,每个数字之间有一个空格(每行最后保留一个空格);如果没有任何分解组合,则输出NONE。解题思路:根据题目,任何可以进行分解的整数,必然满足(m+n)(n-m+1)/2的形式,可以暴力尝试所有m和n组合,如果满足则输出,否则输出None。代码:#include#includeintmain(){intn;while(scanf("%d",&n)!=EOF){intbegin,end;intfound=0;for(begin=1;begin4、r(end=begin+1;end5、10111010100111111上面矩阵的中的1代表海岸线,0代表小岛。求小岛面积(即被1中包围的0的个数)。注意:仅求这样的0,该0所在行中被两个1包围,该0所在列中被两个1包围。输入:第一行输入一个整数N,表示输入方阵的维数输入一个N维方阵输出:小岛面积样例输入:6111111110001100010110111010100111111样例输出:8解题思路:理解题目本身意思,可以发现对于矩阵中的0是否属于内陆,取决于该0所处的行和列上,如果0满足,如下条件则O为内陆,否则不是。0所在的行,0的左边和右边必须有10所6、在的列,0的上面和下面必须有1所以,解题思路就是,遍历所有的行和列,记录改行或列,最左面和最右面(或者最上面和最下面)1的坐标,然后当遇到0,判断是否处于记录的值的中间,是,则是内陆,面积加1,否则不加。代码:#include#includeKao400.com出品侵权必究Kao400.com出品侵权必究#defineDEBUG_BUAA_122intmain(){intN;//矩阵维数intisland[100][100];//输入岛数据的方阵intdata[100][4];#ifde7、fDEBUG_BUAA_122freopen("/Users/bwiunbuaa/tmp/oj/buaa_122.in","r",stdin);#endif/*JOBDU_H_*/while(scanf("%d",&N)!=EOF){inti,j;//初始化memset(data,-1,100*4*sizeof(int));//读入数据for(i=0;i8、if(island[i][j]==1){//小岛边界if(data[i][0]==-1){data[i][0]=j;}if(data[j][2]==-1){data[j][2]=i;}data[i][1]=j;data[j][3]=i;}}}intarea=0;for(i=0;i
4、r(end=begin+1;end5、10111010100111111上面矩阵的中的1代表海岸线,0代表小岛。求小岛面积(即被1中包围的0的个数)。注意:仅求这样的0,该0所在行中被两个1包围,该0所在列中被两个1包围。输入:第一行输入一个整数N,表示输入方阵的维数输入一个N维方阵输出:小岛面积样例输入:6111111110001100010110111010100111111样例输出:8解题思路:理解题目本身意思,可以发现对于矩阵中的0是否属于内陆,取决于该0所处的行和列上,如果0满足,如下条件则O为内陆,否则不是。0所在的行,0的左边和右边必须有10所6、在的列,0的上面和下面必须有1所以,解题思路就是,遍历所有的行和列,记录改行或列,最左面和最右面(或者最上面和最下面)1的坐标,然后当遇到0,判断是否处于记录的值的中间,是,则是内陆,面积加1,否则不加。代码:#include#includeKao400.com出品侵权必究Kao400.com出品侵权必究#defineDEBUG_BUAA_122intmain(){intN;//矩阵维数intisland[100][100];//输入岛数据的方阵intdata[100][4];#ifde7、fDEBUG_BUAA_122freopen("/Users/bwiunbuaa/tmp/oj/buaa_122.in","r",stdin);#endif/*JOBDU_H_*/while(scanf("%d",&N)!=EOF){inti,j;//初始化memset(data,-1,100*4*sizeof(int));//读入数据for(i=0;i8、if(island[i][j]==1){//小岛边界if(data[i][0]==-1){data[i][0]=j;}if(data[j][2]==-1){data[j][2]=i;}data[i][1]=j;data[j][3]=i;}}}intarea=0;for(i=0;i
5、10111010100111111上面矩阵的中的1代表海岸线,0代表小岛。求小岛面积(即被1中包围的0的个数)。注意:仅求这样的0,该0所在行中被两个1包围,该0所在列中被两个1包围。输入:第一行输入一个整数N,表示输入方阵的维数输入一个N维方阵输出:小岛面积样例输入:6111111110001100010110111010100111111样例输出:8解题思路:理解题目本身意思,可以发现对于矩阵中的0是否属于内陆,取决于该0所处的行和列上,如果0满足,如下条件则O为内陆,否则不是。0所在的行,0的左边和右边必须有10所
6、在的列,0的上面和下面必须有1所以,解题思路就是,遍历所有的行和列,记录改行或列,最左面和最右面(或者最上面和最下面)1的坐标,然后当遇到0,判断是否处于记录的值的中间,是,则是内陆,面积加1,否则不加。代码:#include#includeKao400.com出品侵权必究Kao400.com出品侵权必究#defineDEBUG_BUAA_122intmain(){intN;//矩阵维数intisland[100][100];//输入岛数据的方阵intdata[100][4];#ifde
7、fDEBUG_BUAA_122freopen("/Users/bwiunbuaa/tmp/oj/buaa_122.in","r",stdin);#endif/*JOBDU_H_*/while(scanf("%d",&N)!=EOF){inti,j;//初始化memset(data,-1,100*4*sizeof(int));//读入数据for(i=0;i8、if(island[i][j]==1){//小岛边界if(data[i][0]==-1){data[i][0]=j;}if(data[j][2]==-1){data[j][2]=i;}data[i][1]=j;data[j][3]=i;}}}intarea=0;for(i=0;i
8、if(island[i][j]==1){//小岛边界if(data[i][0]==-1){data[i][0]=j;}if(data[j][2]==-1){data[j][2]=i;}data[i][1]=j;data[j][3]=i;}}}intarea=0;for(i=0;i
此文档下载收益归作者所有