CCF真题答案汇总(部分)

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

2015-09-1数据分段给定一个整数数列,数列中连续相同的最长整数序列算成一段,问数列中共有多少段?#includeiostreamusingnamespacestd;intmain(){intn,a[1000];cinn;for(inti=0;in;i++){cina[i];}intd=a[0],m=1;for(inti=1;in;i++){if(a[i]!=d){m++;d=a[i];}}coutmendl;return0;}2015-09-2日期计算给定一个年份y和一个整数d,问这一年的第d天是几月几日?注意闰年的2月有29天。满足下面条件之一的是闰年:1)年份是4的整数倍,而且不是100的整数倍;2)年份是400的整数倍。#includeiostreamusingnamespacestd;intmain(){inty,d,m=1;ciny;cind;if(y%4==0&&y%100!=0||y%400==0){inta[12]={31,29,31,30,31,30,31,31,30,31,30,31};for(inti=0;i12;i++){if(d=a[i]){m++;d=d-a[i];}}}else{inta[12]={31,28,31,30,31,30,31,31,30,31,30,31};for(inti=0;i12;i++){if(d=a[i]){m++;d=d-a[i];}}}coutmendl;coutdendl;return0;}2015-09-3模板生成系统成成最近在搭建一个网站,其中一些页面的部分内容来自数据库中不同的数据记录,但是页面的基本结构是相同的。例如,对于展示用户信息的页面,当用户为Tom时,网页的源代码是#includeiostreamusingnamespacestd;#includestring.h#definemaxn0x7fffffff#includemap#includestdio.hintm,n;intmain(){inti,j;strings[105];strings1,s2,s3,s4;cinnm;getchar();for(i=0;in;i++)getline(cin,s[i]);mapstring,stringv;for(j=0;jm;j++){intk,k1=0;cins1;getchar();getline(cin,s2);s1.insert(0,{{);s1=s1+}};s2.erase(0,1);s2.erase(s2.end()-1,s2.end());v[s1]=s2;}intj1[20],j2[20],k,k1;for(i=0;in;i++){k1=0;memset(j1,-1,sizeof(j1));memset(j2,-1,sizeof(j2));for(j=0;s[i][j]!=0;j++){if(s[i][j]=='{'&&s[i][j+1]=='{')j1[k1]=j;if(s[i][j]=='}'&&s[i][j+1]=='}')j2[k1]=j+1;if(j1[k1]!=-1&&j2[k1]!=-1)k1++;}intt=0;for(j=0;jk1;j++){s3=;for(k=j1[j]+t;k=j2[j]+t;k++)s3.insert(s3.end(),s[i][k]);if(v.count(s3)){s[i].replace(s[i].begin()+j1[j]+t,s[i].begin()+j2[j]+1+t,v[s3]);t=t+v[s3].size()-s3.size();//注意替代后字符串的长度发生改变,t为变化的长度。}else{s[i].replace(s[i].begin()+j1[j]+t,s[i].begin()+j2[j]+1+t,);t=t-s3.size();}}couts[i]endl;}return0;}2015-09-4高速公路某国有n个城市,为了使得城市间的交通更便利,该国国王打算在城市之间修一些高速公路,由于经费限制,国王打算第一阶段先在部分城市之间修一些单向的高速公路。现在,大臣们帮国王拟了一个修高速公路的计划。看了计划后,国王发现,有些城市之间可以通过高速公路直接(不经过其他城市)或间接(经过一个或多个其他城市)到达,而有的却不能。如果城市A可以通过高速公路到达城市B,而且城市B也可以通过高速公路到达城市A,则这两个城市被称为便利城市对。#includeiostream#includecstdio#includecstring#includeset#includequeueusingnamespacestd;constintADJ_NUM=50;constintSIZE=10001;struct_graph{intadj[ADJ_NUM];//来记录邻接点的下标intnum;//指示邻接点的数目};_graphV[SIZE]={0};intLOW[SIZE]={0};intDFN[SIZE]={0};boolinstack[SIZE]={false};//用来记录一个顶点是否在栈里面intStap[SIZE]={0};intBelong[SIZE]={0};intDindex,Stop,Bcnt;intanswer=0;voidtarjan(inti){intj;intindex=0;DFN[i]=LOW[i]=++Dindex;//标记instack[i]=true;//表示这个节点在栈里面Stap[++Stop]=i;//入栈while(true)//寻找邻节点{j=V[i].adj[index++];if(j==0)break;if(!DFN[j])//如果该点还未有入栈{tarjan(j);//从这个节点开始访问,也就是递归if(LOW[j]LOW[i])//j节点访问完成之后,LOW[j]可能发生了变化,要更新LOW[i]LOW[i]=LOW[j];}elseif(instack[j]&&DFN[j]LOW[i])//该节点已经在栈里面了LOW[i]=DFN[j];}if(DFN[i]==LOW[i])//DFN[i]==LOW[i]这说明有一个强连通分量{intsum=0;Bcnt++;//这里表示联通分量的数量加一do{j=Stap[Stop--];instack[j]=false;//这里表示出栈Belong[j]=Bcnt;sum++;}while(j!=i);if(sum!=0)answer+=(sum*(sum-1))/2;}}voidsolve(intN){inti;Stop=Bcnt=Dindex=0;memset(DFN,0,sizeof(DFN));for(i=1;i=N;i++)if(!DFN[i])tarjan(i);}intmain(){intn,m;inta,b;cinnm;while(m--){cinab;V[a].adj[V[a].num]=b;//从a到b有一条边V[a].num++;//计数器加1}solve(n);coutanswerendl;return0;}2015-09-5暂无2015-03-1图像旋转旋转是图像处理的基本操作,在这个问题中,你需要将一个图像逆时针旋转90度。计算机中的图像表示可以用一个矩阵来表示,为了旋转一个图像,只需要将对应的矩阵旋转即可。#includeiostreamusingnamespacestd;inta[1000][1000];intb[1000][1000];intmain(){intm,n;cinmn;for(inti=0;im;i++){for(intj=0;jn;j++){cina[i][j];}}for(inti=0;im;i++){for(intj=0;jn;j++){b[n-1-j][i]=a[i][j];}}for(inti=0;in;i++){for(intj=0;jm;j++){coutb[i][j];}coutendl;}return0;}2015-03-2数字排序给定n个整数,请统计出每个整数出现的次数,按出现次数从多到少的顺序输出。#includeiostreamusingnamespacestd;inta[1000],b[1000];intswap(int&a,int&b){intk;k=a;a=b;b=k;}intmain(){intn,max=0,m;cinn;for(inti=0;in;i++){cina[i];b[i]=1;}//从小到大排序for(inti=0;in-1;i++){for(intj=i+1;jn;j++){if(a[i]a[j])swap(a[i],a[j]);}(}//每个数出现的次数for(inti=1;in;i++){if(a[i]==a[i-1]){b[i]=b[i-1]+1;b[i-1]=0;}}//for(inti=0;in;i++){if(b[i]max)max=b[i];}for(inti=max;i=1;i--){for(intj=0;jn;j++){if(b[j]==i){couta[j]iendl;}}}return0;}2015-03-3节日有一类节日的日期并不是固定的,而是以“a月的第b个星期c”的形式定下来的,比如说母亲节就定为每年的五月的第二个星期日#includeiostreamusingnamespacestd;intday[2][12]={31,28,31,30,31,30,31,31,30,31,30,31,31,29,31,30,31,30,31,31,30,31,30,31};intyear(inta){intrun=0,ping=0,s;for(inti=1850;ia;i++){if(i%400==0||i%100!=0&&i%4==0)run++;elseping++;}s=run*366+ping*365;returns;}intmonth(intb,inttab){ints=0;for(inti=0;ib-1;i++)s+=day[tab][i];returns;}intmain(){inta,b,c,y1,y2;cinabcy1y2;for(inti=y1;i=y2;i++){inttab=0,count=0;if(i%400==0||i%100!=0&&i%4==0)tab=1;ints=year(i)+month(a,tab);intweek=(s-1)%7+3;intj=0;for(j=0;jday[tab][a-1];j++){if(week==c){count++;if(count==b){couti'/'setw(2)setfill('0')a'/'setw(2)setfill('0')(j+1)endl;break;}}week=week%7+1;}if(j==day[tab][a-1])coutnoneendl;}return0;}2015-03-4网络延时2014-12-1门禁系统涛涛最近要负责图书馆的管理工作,需要记录下每天读者的到访情况。每位读者有一个编号,每条记录用读者的编号来表示。给出读者的来访记录,请问每一条记录中的读者是第几次出现。#includeiostreamusingnamespacestd;intmain(){intn,a[1000],b[1000];cinn;for(inti=0;in;i++){cina[i];b[i]=1;}for(inti=1;in;i++){for(intj=0;ji;j++){if

1 / 18
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功