亚信校招笔试题目.docx
- 文档编号:5379633
- 上传时间:2022-12-15
- 格式:DOCX
- 页数:29
- 大小:39.70KB
亚信校招笔试题目.docx
《亚信校招笔试题目.docx》由会员分享,可在线阅读,更多相关《亚信校招笔试题目.docx(29页珍藏版)》请在冰豆网上搜索。
亚信校招笔试题目
1.BST
publicclassBSTMinLength{
publicstaticvoidmain(String[]args){
TreeNodetNode11=newTreeNode(10,null,null);
TreeNodetNode12=newTreeNode(50,null,null);
TreeNodetNode13=newTreeNode(5,null,null);
TreeNodetNode14=newTreeNode(30,null,null);
TreeNodetNode21=newTreeNode(30,tNode11,tNode12);
TreeNodetNode22=newTreeNode(30,tNode13,tNode14);
TreeNodetNodeRoot=newTreeNode(100,tNode21,tNode22);
System.out.println(minlength(tNodeRoot));
}
privatestaticintminlength(TreeNodetNode)
{
if(tNode!
=null){
returngetlength(tNode,0);
}
return-1;
}
privatestaticintgetlength(TreeNodetNode,intcurLength){
intminLeft=-1;
intminRight=-1;
if(tNode.leftNode!
=null){
minLeft=getlength(tNode.leftNode,curLength+tNode.value);
}
if(tNode.rightNode!
=null){
minRight=getlength(tNode.rightNode,curLength+tNode.value);
}
if(tNode.leftNode==null&&tNode.rightNode==null){
returncurLength+tNode.value;
}
if(tNode.leftNode==null){
returnminRight;
}
if(tNode.rightNode==null){
returnminLeft;
}
returnminLeft>minRight?
minRight:
minLeft;
}
}
classTreeNode{
intvalue;
TreeNodeleftNode;
TreeNoderightNode;
TreeNode(intvalue,TreeNodelefeNode,TreeNoderightNode){
this.value=value;
this.leftNode=lefeNode;
this.rightNode=rightNode;
}
}
2.lru
#include
usingnamespacestd;
intlruCountMiss(intmax_cache_size,int*pages,intlen)
{
intcount=0;
inti,j,k,n;
boolflag=false;
int*a=newint[max_cache_size];
//初始化高速缓存数组
for(i=0;i { a[i]=-1; } for(j=0;j { for(i=0;i { if(pages[j]! =a[i]) { continue; } else { break; } } if(i! =max_cache_size) { for(k=i;k { if(a[k]==-1) { flag=true; break; } } if(! flag) { for(n=i;n { a[n]=a[n+1]; } a[max_cache_size-1]=pages[j]; } else { flag=false; for(n=i;n { a[n]=a[n+1]; } a[k-1]=pages[j]; } } else { count++; for(i=0;i { if(a[i]==-1) { a[i]=pages[j]; flag=true; break; } } if(! flag) { for(i=0;i { a[i]=a[i+1]; } a[max_cache_size-1]=pages[j]; } else flag=false; } } returncount; } intmain() { intarr[]={7,0,1,2,0,3,0,4}; cout< return0; } 3.反转链表 lnode*reverse(lnode*head){ if(head){ lnode*prev=NULL; lnode*curr=head; lnode*next=curr->next; curr->next=prev; while(next! =NULL){ prev=curr; curr=next; next=next->next; curr->next=prev; } returncurr; }else{ returnhead; } }; lnode*reverseLinkedList(lnode*list){ if(list){ lnode*ori=list; lnode*half=list; lnode*prev=list; while(list&&half&&half->next){ prev=list; list=list->next; half=half->next; if(half){ half=half->next; } } if(list){ prev->next=reverse(list); } returnori; } returnlist; } 4.SJF floatwaitingTimeSJF(int*requestTimes,int*durations,intn){ int*flags=newint[n]; floatsums=0; for(inti=0;i flags[i]=-1; } intnowtime=0; for(inti=0;i intcount=0; for(intk=0;k if(count==0){ if(requestTimes[k]<=nowtime&&durations[k]>=0){ flags[count++]=k; } } else{ if(durations[k]>=0&&requestTimes[k]<=nowtime){ if(durations[k] count=1; flags[0]=k; }elseif(durations[k]==durations[flags[0]]){ flags[count++]=k; } } } } if(count==0){ count=1; for(intj=0;j if(durations[j]>=0){ flags[0]=j; nowtime=requestTimes[j]; } } } intidx=flags[0]; intminreq=requestTimes[flags[0]]; intmindrus=durations[idx]; if(count>1){ for(intj=1;j if(requestTimes[flags[j]] minreq=requestTimes[flags[j]]; idx=flags[j]; } } } sums+=nowtime-requestTimes[idx]; nowtime+=durations[idx]; requestTimes[idx]=-1; durations[idx]=-1; } returnsums/n; } 5无向连通判断是否为树 #include #include #include constintN=10000,M=100000; booledge[N][N];//数组记录两点是否存在边 boolvisit[N];//标记该节点是否访问过 boolDFS_check(intx,inty=-1) { if(visit[x]) returnfalse; visit[x]=true; inti; for(i=0;i if(edge[x][i]&&i! =y) if(visit[i]) returnfalse; else if(! DFS_check(i,x)) returnfalse; returntrue; } intmain() { intn,m; scanf("%d%d",&n,&m); memset(edge,false,sizeof(edge)); inti,x,y; for(i=0;i { scanf("%d%d",&x,&y); edge[x-1][y-1]=true; edge[y-1][x-1]=true; } memset(visit,false,sizeof(visit)); boolresult=DFS_check(0); if(result) for(i=0;i if(! visit[i]) result=false; if(result) printf("Yes! \n"); else printf("No! \n"); system("pause"); return0; } 6.老鼠奶酪 #include usingnamespacestd; intisPath(int**grid,intm,intn); struct_TraversedNode{ intx; inty; _TraversedNode*next; }; struct_Node{ intx; inty; }; intmain(intargc,constchar*argv[]) { int**grid=newint*[8]; for(inti=0;i<8;i++) { grid[i]=newint[8]; } grid[0][0]=1;grid[0][1]=1;grid[0][2]=0;grid[0][3]=0;grid[0][4]=0;grid[0][5]=0;grid [0][6]=0;grid[0][7]=1; grid[1][0]=1;grid[1][1]=1;grid[1][2]=1;grid[1][3]=1;grid[1][4]=1;grid[1][5]=1;grid [1][6]=1;grid[1][7]=1; grid[2][0]=1;grid[2][1]=0;grid[2][2]=0;grid[2][3]=0;grid[2][4]=1;grid[2][5]=0;grid [2][6]=0;grid[2][7]=1; grid[3][0]=1;grid[3][1]=1;grid[3][2]=1;grid[3][3]=0;grid[3][4]=1;grid[3][5]=0;grid [3][6]=0;grid[3][7]=1; grid[4][0]=0;grid[4][1]=1;grid[4][2]=0;grid[4][3]=0;grid[4][4]=1;grid[4][5]=1;grid [4][6]=1;grid[4][7]=1; grid[5][0]=0;grid[5][1]=1;grid[5][2]=0;grid[5][3]=0;grid[5][4]=0;grid[5][5]=0;grid [5][6]=0;grid[5][7]=1; grid[6][0]=0;grid[6][1]=1;grid[6][2]=0;grid[6][3]=9;grid[6][4]=1;grid[6][5]=1;grid [6][6]=1;grid[6][7]=1; grid[7][0]=0;grid[7][1]=1;grid[7][2]=1;grid[7][3]=1;grid[7][4]=0;grid[7][5]=0;grid [7][6]=1;grid[7][7]=0; for(inti=0;i<8;i++) { for(intj=0;j<8;j++) cout< cout< returnisPath(grid,8,8); } intisPath(int**grid,intm,intn) { if(grid[0][0]==0)return0; if(grid[0][0]==9)return1; intstep=0; boolflag_down_success=true; boolflag_up_success=true; boolflag_left_success=true; boolflag_right_success=true; _TraversedNode*p=NULL; _TraversedNode*p_check=NULL; _TraversedNode*head=NULL; _TraversedNode*TraversedNode=new_TraversedNode; TraversedNode->x=0; TraversedNode->y=0; head=TraversedNode; p=TraversedNode; p->next=NULL; intcount_node=0; intnum_node=1; _Node*node=new_Node[n+m]; _Node*node_next=new_Node[n+m]; node[0].x=0; node[0].y=0; while (1) { for(inti=0;i { if(node[i].x+1<=m-1) { if(grid[node[i].x+1][node[i].y]! =0) { if(grid[node[i].x+1][node[i].y]==9) { step++; cout<<"可以最短"< return1; } p_check=head; while(p_check! =NULL) { if((p_check->x==node[i].x+1)&&(p_check->y==node[i].y)) { p_check=NULL; flag_down_success=false; } else { p_check=p_check->next; } } if(flag_down_success) { TraversedNode=new_TraversedNode; TraversedNode->x=node[i].x+1; TraversedNode->y=node[i].y; p->next=TraversedNode; p=TraversedNode; p->next=NULL; node_next[count_node].x=node[i].x+1; node_next[count_node].y=node[i].y; count_node++; } flag_down_success=true; } } if(node[i].x-1>=0) { if(grid[node[i].x-1][node[i].y]! =0) { if(grid[node[i].x-1][node[i].y]==9) { step++; cout<<"可以最短"< return1; } p_check=head; while(p_check! =NULL) { if((p_check->x==node[i].x-1)&&(p_check->y==node[i].y)) { p_check=NULL; flag_up_success=false; } else { p_check=p_check->next; } } if(flag_up_success) { TraversedNode=new_TraversedNode; TraversedNode->x=node[i].x-1; TraversedNode->y=node[i].y; p->next=TraversedNode; p=TraversedNode; p->next=NULL; node_next[count_node].x=node[i].x-1; node_next[count_node].y=node[i].y; count_node++; } flag_up_success=true; } } if(node[i].y+1<=n-1) { if(grid[node[i].x][node[i].y+1]! =0) { if(grid[node[i].x][node[i].y+1]==9) { step++; cout<<"可以最短"< return1; } p_check=head; while(p_check! =NULL) { if((p_check->x==node[i].x)&&(p_check->y==node[i].y+1)) { p_check=NULL; flag_right_success=false; } else { p_check=p_check->next; } } if(flag_right_success) { TraversedNode=new_TraversedNode; TraversedNode->x=node[i].x; TraversedNode->y=node[i].y+1; p->next=TraversedNode; p=TraversedNode; p->next=NULL; node_next[count_node].x=node[i].x; node_next[count_node].y=node[i].y+1; count_node++; } flag_right_success=true; } } if(node[i].y-1>=0) { if(grid[node[i].x][node[i].y-1]! =0) { if(grid[node[i].x][node[i].y-1]==9) { step++; cout<<"可以最短"< return1; } p_check=head; while(p_check! =NULL) { if((p_check->x==node[i].x)&&(p_check->y==node[i].y-1)) { p_check=NULL; flag_left_success=false; } else { p_check=p_check->next; } } if(flag_left_success) { TraversedNode=new_TraversedNode; TraversedNode->x=node[i].x; TraversedNode->y=node[i].y-1; p->next=TraversedNode;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 亚信校招 笔试 题目