CCF例题小结.docx
- 文档编号:24434826
- 上传时间:2023-05-27
- 格式:DOCX
- 页数:24
- 大小:19.46KB
CCF例题小结.docx
《CCF例题小结.docx》由会员分享,可在线阅读,更多相关《CCF例题小结.docx(24页珍藏版)》请在冰豆网上搜索。
CCF例题小结
2015年试题前3道解析(个人观点,仅供参考)
(1)数列分段
importjava.util.Scanner;
publicclassMain{
publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
Scannersc=newScanner(System.in);
int[]op=newint[1000];
inti,N,temp,we,count=1;
N=sc.nextInt();
temp=sc.nextInt();
for(i=0;i we=sc.nextInt(); if(temp==we) continue; else{ count++; temp=we; } } System.out.println(count); } } (2)时间长了,忘记顺序和题目了,解题时可以参考下面对思路 importjava.io.BufferedReader; importjava.io.IOException; importjava.io.InputStreamReader; publicclassMain{ publicstaticvoidmain(String[]args)throwsIOException{ inti,M,N,j,z,y,v; BufferedReaderisr=newBufferedReader( newInputStreamReader(System.in)); Stringtemp=isr.readLine(); M=Integer.parseInt(temp.substring(0,2)); N=Integer.parseInt(temp.substring(3,4)); String[]str=newString[M]; String[][]k=newString[N][2]; for(i=0;i str[i]=isr.readLine(); } for(i=0;i k[i]=isr.readLine().split("\""); } for(j=0;j for(z=0;z if(str[j].substring(z,z+1).equals("{")){ { booleanflag=true; for(y=0;y if(str[j].substring(z+3, z+3+k[y][0].length()).equals(k[y][0])){ str[j]=str[j].substring(0,z) +k[y][1] +str[j].substring(z+5 +k[y][0].length()); flag=false; } } if(flag){ for(v=0;v { if(str[j].substring(v,v+1).equals("}")) { str[j]=str[j].substring(0,z) +str[j].substring(v+2); break; } } } } } }} for(i=0;i System.out.println(str[i]); }}} (3) importjava.util.Scanner; publicclassMain{ publicstaticvoidmain(String[]args){ Scannersc=newScanner(System.in); intyear; do{ year=sc.nextInt(); }while(year-1900<0||2015-year<0); intda=sc.nextInt(); booleanflag=false; intmon=0; inttemp=0; if((year%400==0)||(year%4==0)&&(year%100! =0)){ flag=true; } do{ mon++; switch(mon){ case1: case3: case5: case7: case8: case10: case12: temp=31; break; case4: case6: case9: case11: temp=30; break; case2: if(flag) temp=29; else temp=28; break;} da=da-temp; }while(da>=0); System.out.println(mon); System.out.println(da+temp);}} 下面是历年的试题解析(仅部分): (1) importjava.util.Scanner; /** *ISBN号码,程序思想不是很难,主要卡在不知道字符和整型数据怎么归为统一类型 *进行比较 *第一种方法是我的使用了数组操作,50分,估计是运行内存的问题,第二种方法是参考答案 *@author * */ publicclassMain{ publicstaticvoidmain(String[]args){ inti=0,j=0,sum=0; Stringop=null; Scannerin=newScanner(System.in); char[]str=newchar[10]; //System.out.println("请输入ISBN码: "); op=in.next(); for(i=0;i<13;i++){ if(op.charAt(i)=='-') continue; str[j++]=op.charAt(i); } //for(i=0;i<9;i++) //{ //System.out.print(str[i]+""); //} for(i=1;i<10;i++){ switch(str[i-1]){ case'0': sum+=0; break; case'1': sum+=i*1; break; case'2': sum+=i*2; break; case'3': sum+=i*3; break; case'4': sum+=i*4; break; case'5': sum+=i*5; break; case'6': sum+=i*6; break; case'7': sum+=i*7; break; case'8': sum+=i*8; break; case'9': sum+=i*9; break; default: break; } } //System.out.println(sum); //System.out.println(Integer.toString(sum%11)); //System.out.println(Integer.valueOf(str[9])); //Character.toChars(sum%11); //System.out.println(Character.toString(str[9]).equals(Integer.toString(sum%11))); if(sum%11==10) { System.out.println(X); }elseif(Character.toString(str[9]).equals(Integer.toString(sum%11))){ System.out.println("Right"); }else{ System.out.println(op.substring(0,12)+(sum%11)); } } } //第二种方案 importjava.io.BufferedReader; importjava.io.InputStreamReader; /** *中心思想: *利用Java中的【字符串】和【字符】函数进行操作 *@author * */ publicclassMain{ publicstaticvoidmain(Stringargs[]){ BufferedReaderbin=newBufferedReader( newInputStreamReader(System.in)); try{ intsum=0; charcc='0'; Stringisbn_0=bin.readLine(); Stringisbn=isbn_0.replace("-",""); for(inti=0;i<9;i++){ intii=(int)isbn.charAt(i)-48; sum+=ii*(i+1); } sum=sum%11; if(sum==10) cc='X'; else cc=(char)(sum+48); if(cc==isbn.charAt(9)) System.out.println("Right"); else{ isbn_0=isbn_0.substring(0,12)+cc; System.out.println(isbn_0); } }catch(Exceptione){ e.printStackTrace(); } } } (2) importjava.util.Scanner; /** *两个while循环解决问题? ? ? *这个问题似乎不是太难,只是没有提前看 *一个循环控制上行,另一个循环控制下行 *分析一边就行 *@author * */ publicclassMain{ publicstaticvoidmain(String[]args){ int[][]a=newint[500][500]; Scannersc=newScanner(System.in); intn; n=sc.nextInt(); inti,j; for(i=0;i for(j=0;j a[i][j]=sc.nextInt(); } } i=0; j=0; booleanp=true,k=true; while(i! =n-1||j! =n-1){ while(p){//上行 if(i! =0&&j! =n-1){ System.out.print(a[i][j]+""); i--; j++; }elseif(j==n-1){ System.out.print(a[i][j]+""); i++; k=true; p=false; }elseif(i==0){ System.out.print(a[i][j]+""); j++; k=true; p=false; } } while(k){//下行 if(i! =n-1&&j! =0){ System.out.print(a[i][j]+""); i++; j--; }elseif(i==n-1){ System.out.print(a[i][j]+""); j++; p=true; k=false; }elseif(j==0){ System.out.print(a[i][j]+""); i++; p=true; k=false; } } } System.out.println(a[i][j]); } } (3) importjava.util.Scanner; publicclassMain{ staticclassS{ intx; inty; }; publicstaticvoidmain(String[]args){ Ss=newS(); s.x=0; Scannersc=newScanner(System.in); s.y=20000; int[]a=newint[1000]; intn=sc.nextInt(); inti; for(i=0;i a[i]=sc.nextInt(); } for(i=0;i intk=1; for(intj=+1;j if(a[i]==a[j]&&a[j]<20000){ k++; a[j]=20000; } } if(s.x<=k&&s.y>a[i]){ s.x=k; s.y=a[i]; } } System.out.println(s.y); } } (4) //importjava.util.Scanner; ///** //*由于定义变量问题,出现大的堵塞。 。 。 //*还是利用整型数组操作实现 //*第一种方法是错误的,费时间1近1天;原因是题意理解错误! ! ! //*第二种方法是借鉴网上的,完全解决问题 //*@author //* //*/ //publicclassMain{ // //publicstaticvoidmain(String[]args){ //inti,j,N,M; //Scannerin=newScanner(System.in); // //N=in.nextInt(); //M=in.nextInt(); //int[]nr=newint[4*N]; //int[]mr=newint[2*M]; //for(i=0;i<4*N;i++) //nr[i]=in.nextInt(); //for(i=0;i<2*M;i++) //mr[i]=in.nextInt(); //for(i=0;i<2*M;i=i+2){ //booleanflag=false;//由于这个变量定义的不是位置,导致浪费了近4个小时 //for(j=0;j<4*N;j=j+2){ //if((mr[i]==nr[j])&&(mr[i+1]==nr[j+1])){ //flag=true; //System.out.println(j/4+1); //break; //} //} //if(! flag){ //System.out.println("IGNORED"); //} //} //} //} /** *第二种方法C++利用结构体 *而java用类体代替,中间也有数组的操作 */ importjava.util.Scanner; publicclassMain{ staticclasswindow{ intx1; inty1; intx2; inty2; intnum; }; staticclasspoint{ intx1; inty1; }; publicstaticvoidmain(String[]args){ window[]win=newwindow[10]; for(inti=0;i win[i]=newwindow(); } point[]poin=newpoint[10]; for(inti=0;i poin[i]=newpoint(); } intN,M,i,j,n=-1; Scannersc=newScanner(System.in); N=sc.nextInt(); M=sc.nextInt(); for(i=0;i win[i].x1=sc.nextInt(); win[i].y1=sc.nextInt(); win[i].x2=sc.nextInt(); win[i].y2=sc.nextInt(); } for(j=0;j poin[j].x1=sc.nextInt(); poin[j].y1=sc.nextInt(); } for(i=0;i win[i].num=i+1; } for(j=0;j for(i=N-1;i>=0;i--){ if(poin[j].x1>=win[i].x1&&poin[j].x1<=win[i].x2 &&poin[j].y1>=win[i].y1&&poin[j].y1<=win[i].y2){ n=win[i].num; windowtemp=win[i]; for(intz=i;z win[z]=win[z+1]; } win[N-1]=temp; break; } } if(i! =-1){ System.out.println(n); }else{ System.out.println("IGNORED"); } } sc.close(); } } (5) packageMain; //方法一使用二维数组存储实现,得到10分 importjava.util.Scanner; publicclassMain{ publicstaticvoidmain(String[]args){ inti,j,m; Scannerin=newScanner(System.in); m=in.nextInt(); int[][]st=newint[2][m]; for(j=0;j st[0][j]=in.nextInt(); } for(j=0;j for(i=j+1;i if(st[0][j]==st[0][i]){ st[0][i]=0; ++st[1][j]; } } for(j=0;j if(st[0][j]! =0) System.out.println(st[0][j]+""+(st[1][j]+1)); } in.close(); } } //
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- CCF 例题 小结
![提示](https://static.bdocx.com/images/bang_tan.gif)