最新CCF部分真题代码Java.docx
- 文档编号:29884638
- 上传时间:2023-08-03
- 格式:DOCX
- 页数:23
- 大小:21.95KB
最新CCF部分真题代码Java.docx
《最新CCF部分真题代码Java.docx》由会员分享,可在线阅读,更多相关《最新CCF部分真题代码Java.docx(23页珍藏版)》请在冰豆网上搜索。
最新CCF部分真题代码Java
2013-12-1//出现次数最多的数
packagedemo;
importjava.util.*;
publicclassTest2{
publicstaticvoidmain(String[]args){
newTest2().run();
}
publicvoidrun(){
System.out.println("请输入:
");
@SuppressWarnings("resource")
Scannerfin=newScanner(System.in);
intN=fin.nextInt();
int[]count=newint[10001];
for(inti=0;i ++count[fin.nextInt()]; } intmaxCount=-1; intresult=0; for(inti=1;i<=10000;++i){ if(count[i]>maxCount){ maxCount=count[i]; result=i; } } System.out.println(result); } } 2014-03-01//相反数 packagedemo; importjava.util.*; publicclassTest3{ publicstaticvoidmain(String[]args){ newTest3().run(); } publicvoidrun(){ @SuppressWarnings("resource") //输入一个正整数1~500 Scannerinput=newScanner(System.in); System.out.println("请输入一个1~500的整数: "); intN=input.nextInt(); int[]value=newint[N]; intcount=0; System.out.println("请输入"+N+"个正整数,且每个数绝对值不超过1000,不同的数"); //加入数组 for(inti=0;i value[i]=input.nextInt(); } //双层循环查找 for(inti=0;i for(intj=i+1;j if(value[i]==(-value[j])){ count++; } } } System.out.println(count); } } 201309-3//字符串匹配 packagedemo; importjava.util.Scanner; publicclassTest4{ publicstaticvoidmain(String[]args){ @SuppressWarnings("resource") Scannerreader=newScanner(System.in); Stringstr=reader.next(); intp=reader.nextInt(); intn=reader.nextInt(); intd=0; String[]re=newString[n]; for(intt=0;t Strings=reader.next(); if(p==0){ s=s.toLowerCase(); str=str.toLowerCase(); } if(s.contains(str)){ re[d]=s; d=d+1; } } for(inti=0;i System.out.println(re[i]); } } 2014-09-1//相邻数对 packagedemo; importjava.util.*; publicclassTest5{ publicstaticvoidmain(String[]args){ newTest5().run(); } publicvoidrun(){ //输入 System.out.println("请输入"); @SuppressWarnings("resource") Scannerinput=newScanner(System.in); intN=input.nextInt(); intcount=0; int[]value=newint[N]; //加入数组 for(inti=0;i value[i]=input.nextInt(); } //双循环查找 for(inti=0;i for(intj=i+1;j ints=value[i]-value[j]; if(Math.abs(s)==1) count++; } } System.out.println(count); } } 201503-1//图像反转 packagedemo; importjava.util.*; publicclassTest7{ publicstaticvoidmain(String[]args){ newTest7().run(); } publicvoidrun(){ @SuppressWarnings("resource") Scannersc=newScanner(System.in); intM=sc.nextInt(); intN=sc.nextInt(); //int[][]arr=newint[M][N]; int[][]arr=newint[N][M]; for(inti=0;i for(intj=0;j arr[N-j-1][i]=sc.nextInt();//需要找的规律,归纳法 } } for(inti=0;i for(intj=0;j System.out.print(arr[i][j]+""); } System.out.println(); } } } 201312-03//最大的矩形 packagedemo; importjava.util.*; publicclassTest9{ publicstaticvoidmain(String[]args){ newTest9().run(); } publicvoidrun(){ @SuppressWarnings("resource") Scannerfin=newScanner(System.in); intN=fin.nextInt(); int[]height=newint[N]; for(inti=0;i height[i]=fin.nextInt(); intresult=0; for(inti=0;i intwidth=1;//每次循环i自增时,都要将width设为1 //向第i个矩形的左方寻找 for(intj=i-1;j>=0;--j){ if(height[j] break; ++width; } //向第i个矩形的右边寻找 for(intj=i+1;j if(height[j] break; ++width; } intarea=width*height[i];//包含当前第i个矩形框的最大面积 result=Math.max(result,area);//max(a1,a2)取两个数的最大值 } System.out.println(result); } } 201409-2//画图 packagedemo; importjava.util.Scanner; importjava.util.HashSet; publicclassTest10{ publicstaticvoidmain(String[]args){ @SuppressWarnings("resource") Scannersc=newScanner(System.in); intn=sc.nextInt();//要画矩形的个数 HashSet int[]axis=newint[4]; for(inti=1;i<=n;i++){ for(intj=0;j<4;j++){ axis[j]=sc.nextInt(); } set.addAll(transferToUniteGrid(axis[0],axis[1],axis[2],axis[3])); } System.out.println(set.size()); } privatestaticHashSet HashSet //对两个点进行排序,以保证x1 inttemp; if(x1>x2){ temp=x1; x1=x2; x2=temp; } if(y1>y2){ temp=y1; y1=y2; y2=temp; } for(inti=x1;i for(intj=y1;j set.add(newUnitGrid(i,j)); } } returnset; } } classUnitGrid{ intx,y;//用左下角的坐标来代表一个UnitGrid publicUnitGrid(intx,inty){ this.x=x; this.y=y; } //重写equals方法,若左下角坐标一致,则相等 @Override publicbooleanequals(Objecto){ if(o==null)returnfalse; if(! (oinstanceofUnitGrid))returnfalse; UnitGridug=(UnitGrid)o; if((this.x==ug.x)&&(this.y==ug.y)){ returntrue; } returnfalse; } //重写hashCode方法。 @Override publicinthashCode(){ //如果两个UnitGrid的x,y相等,则为同一元素 intresult=17; return(37*result+this.x)*37+this.y; } } 201403-4//窗口 packagedemo; importjava.util.Scanner; publicclassTest11{ publicstaticvoidmain(Stringargs[]){ System.out.println("输入N和M: "); @SuppressWarnings("resource") Scannerinput=newScanner(System.in); intn=input.nextInt(); intm=input.nextInt(); //给出N个窗口位置 //每个给出四个数,并且x1 //创建二维数组 int[][]values=newint[n][4]; for(inti=0;i System.out.println(n+"个窗口: "); for(intj=0;j<4;j++){ values[i][j]=input.nextInt(); } } //分别是最下层到顶层的次序 //用一个数组存储他们的次序 //初始化顺序 int[]num=newint[n]; for(inti=1;i<=n;i++){ num[i-1]=i; } //接下来进行M次点击事件 //每行包含两个非负整数x,y //输出结果存储 String[]results=newString[m]; //0forIGNORED //进行点击 //先判断点击的位置落在哪些窗口,然后判断顺序,顺序在最上面的就是我们的点击相应窗口 //m次点击 //点击后要改变顺序 for(inti=0;i //每次操作 System.out.println("进行点击: "); intx=input.nextInt(); inty=input.nextInt(); for(intj=0;j if(x>=values[j][0]&&x<=values[j][2] &&y>=values[j][1]&&y<=values[j][3]){ if(results[i]==null||num[Integer.parseInt(results[i])] results[i]=String.valueOf(j); System.out.println("第"+(j+1)+"个窗口显示"+results[i]); } } } //被点击的置于顶层交换顺序 //n个窗口判断哪个是最上面的 inttop=0; for(intk=0;k if(num[k]==n){ top=k; } } if(results[i]==null){ results[i]="IGNORED"; }else{ inttemp=num[Integer.parseInt(results[i])]; num[Integer.parseInt(results[i])]=n; num[top]=temp; } } for(inti=0;i if(results[i]! =null){ results[i]=String.valueOf(Integer.parseInt(results[i])+1); } } System.out.println("结果: "); for(inti=0;i System.out.println(results[i]); } } } 201412-2//Z字形扫描 packagedemo; /*1.根据上一步的方向以及是否到达边界位置来决定下一步方向; 2.根据步骤1得到的方向前进一步,读取该位置的数字。 循环直至到达终点(n-1,n-1)*/ importjava.util.Scanner; publicclassTest12{ //下面四个变量代表四个方向 publicstaticfinalintRIGHT=1;//向右走 publicstaticfinalintDOWN=2;//向下走 publicstaticfinalintLEFTDOWN=3;//向做下走 publicstaticfinalintRIGHTUP=4;//向右上走 publicstaticintdata[][];//矩 publicstaticvoidmain(String[]args) newTest12().run(); } publicvoidrun(){ //接收输入 @SuppressWarnings("resource") Scannerscanner=newScanner(System.in); intn=scanner.nextInt(); data=newint[n][n] for(inti=0;i for(intj=0;j data[i][j]=scanner.nextInt(); } } //从第一个位置开始,x为横坐标,y为纵坐标,注意x,y在二维数组中的位置 intx=0; inty=0; //输出要求有空格隔开 Stringresult=data[y][x]+""; //方向变量的初始值 intdirection=0; //下面就开始出发走咯 while(! (x==n-1&&y==n-1)){//循环直至到达终点(最右下角的位置) //先判断下一步往哪个方向走 if(direction==0){//为0说明还没走出第一步,所以接着应该往右边走一步 direction=RIGHT; }elseif(direction==RIGHT){//上一次方向向右,下一步应该向左下或者右上 if(x-1>=0&&y+1 direction=LEFTDOWN; }else{//只能走右上了 direction=RIGHTUP; } }elseif(direction==DOWN){//上一次方向向下,下一步应该向左下或者右上 if(x-1>=0&&y+1 direction=LEFTDOWN; }else{//只能走右上了 direction=RIGHTUP; } }elseif(direction==LEFTDOWN){//上一次向左下,如果可以,下一步应该继续向左下,否则向右或者向下走 if(y+1 direction=LEFTDOWN; }elseif(y+1 direction=DOWN; }else{//最后只能向右走了 direction=RIGHT; } }elseif(direction==RIGHTUP){//上一次向右上,如果可以,下一步应该继续向右上,否则向右或者下走 if(x+1 direction=RIGHTUP; }elseif(x+1 direction=RIGHT; }else{//最后只能向下走了 direction=DOWN; } } //根据上面确定的方向来走出下一步 switch(direction){ caseRIGHT: x=x+1;break; caseDOWN: y=y+1;break; caseLEFTDOWN: x=x-1;y=y+1;break; caseRIGHTUP: x=x+1;y=y-1;break; } //读取当前走到位置的数字.注意x和y的位置 result+=data[y][x]+""; } //输出结果(这里需不需要去掉最后的空格? 没怎么玩过ACM,不记得了acc格式控制会不会这么严) System.out.println(result); }} 10. importjava.io.BufferedReader; importjava.io.InputStreamReader; //ISBN号码 publicclassTest13{ publicstaticvoidmain(String[]args){ 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.printl
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 最新 CCF 部分 代码 Java