CCF例题小结.docx

上传人:b****2 文档编号:24434826 上传时间:2023-05-27 格式:DOCX 页数:24 大小:19.46KB
下载 相关 举报
CCF例题小结.docx_第1页
第1页 / 共24页
CCF例题小结.docx_第2页
第2页 / 共24页
CCF例题小结.docx_第3页
第3页 / 共24页
CCF例题小结.docx_第4页
第4页 / 共24页
CCF例题小结.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

CCF例题小结.docx

《CCF例题小结.docx》由会员分享,可在线阅读,更多相关《CCF例题小结.docx(24页珍藏版)》请在冰豆网上搜索。

CCF例题小结.docx

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();

}

}

//

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > IT认证

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1