packagep1;
importjava.util.Scanner;
/**
*龟兔赛跑
*
*@authoryugi
*/
publicclassTortoiseHare
{
publicstaticfinalStringT="T";
publicstaticfinalStringR="R";
publicstaticfinalStringD="D";
privatestaticvoidrace(intv1,intv2,intt,ints,intl,
intstart1,intstart2,ints1,ints2,inttime,
booleanrest)
{
if(
v1<0||v2<0||t<0||s<0||l<0
||v1>100||v2>100||t>300||s>10||l>10000
||l%v1!=0||l%v2!=0
)
{
try
{
thrownewException("参数输入不合标消敬搜准!");
}
catch(Exceptione)
{}
}
else
{
//兔子或乌龟已经到达终点
if(s1>=l||s2>=l)
{
if(s1>s2)
{
System.out.println(R);
System.out.println(time+start1);
}
elseif(s1<s2)
{
System.out.println(T);
System.out.println(start2);
}
else
{
System.out.println(D);
System.out.println(start2);
}
return;
}
//兔子开始休息
if(!rest&&s1-s2>=t)
{
rest=true;
time+=s;
}
//兔子休息了s秒(不包括s秒,第s秒开始行动,题目意思不是s秒之后)
if(rest&&start2-start1>=s)
{
//开始跑了(不休息)
rest=false;
}
//兔子不休息的时候跑
if(!rest)
{
start1++;
s1=v1*start1;
}
//乌龟总在跑
start2++;
s2=v2*start2;
//递归调用
race(v1,v2,t,s,l,start1,start2,s1,s2,time,rest);
}
}
publicstaticvoidmain(String[]args)
{
System.out.println("输入只有一行,包含用空格拿历隔开的五个正整数v1,v2,t,s,l,"+
" 其中(v1,v2<=100;t<=300;s<=10;l<=10000且为v1,v2的公倍数)"+
" 退出输入n/N,否则继续:");
Scannerscanner=newScanner(System.in);
Stringline=null;
Stringreg="^([1-9]\d*|\d)\s+([1-9]\d*|\d)\s+([1-9]\d*|\d)\s+([1-9]\d*|\d)\s+([1-9]\d*|\d)$";
while(scanner.hasNextLine())
{
line=scanner.nextLine().trim();
if("n".equalsIgnoreCase(line))
{
break;
}
if(!line.matches(reg))
{
System.err.println("输入不对,重新输入:");
}
else
{
String[]input=line.split("\s+");
intv1=Integer.parseInt(input[0]);
intv2=Integer.parseInt(input[1]);
intt=Integer.parseInt(input[2]);
ints=稿胡Integer.parseInt(input[3]);
intl=Integer.parseInt(input[4]);
race(v1,v2,t,s,l,0,0,0,0,0,false);
System.out.println("退出输入n/N,否则继续:");
}
}
scanner.close();
}
}
② 蓝桥杯java比赛时,题目会给出cpu时间限制,如何确定程序运行时间
正常情况下,时间和输入数据的规模以及你的代码的时间复杂度相关。如果输入数据规模不大,那么编写代码时可以不在意时间复杂度的大小,如果输入的数据规模大,时间限制很小时,比如排序10000个数时,采用冒泡等时间复杂度为为O(n^2)的排序算法时就会超时,需考虑使用快排、桶排序等时间复杂度较低的算法进行排序。
③ ACM竞赛是什么
ACM(国际大学生程序设计竞赛)ACM-Association for Computing Machinery , 即国际计算机学会。CPC-International Collegiate Programming Contest , 即国际大学生程序设计竞赛·。
ACM国际大学生程序设计竞赛(英文全称:ACM International Collegiate Programming Contest(ACM-ICPC或ICPC)是由国际计算机学会(ACM)主办的,一项旨在展示大学生创新能力、团队精神和在压力下编写程序、分析和解决问题能力的年度竞赛。经过近30多年的发展,ACM国际大学生程序设计竞赛已经发展成为最具影响力的大学生计算机竞赛。赛事目前由IBM公司赞助。
ACM国际大学生程序设计竞赛已成为世界各国大学生最具影响力的国际级计算机类的赛事, 是广大爱好计算机编程的大学生展示才华的舞台,是着名大学计算机教育成果的直接体现,是信息企业与世界顶尖计算机人才对话的最好机会。
该项竞赛分区域预赛和国际决赛两个阶段进行,各预赛区第一名自动获得参加世界决赛的资格,世界决赛安排在每年的3~4月举行,而区域预赛安排在上一年的9~12月在各大洲举行。
ACM/ICPC的区域预赛是规模很大、范围很广的赛事。仅在2003年参加区域预赛的队伍就有来自75个国家(地区),1411所大学的3150支代表队,他们分别在127个赛场中进行比赛,以争夺全球总决赛的73个名额,其激烈程度可想而知。2005年第30届ACM/ICPC亚洲赛区预赛共设了北京、成都、汉城、东京等11个赛站,来自亚洲各国知名高校的各个代表队进行了激烈的角逐.
④ 算法竞赛是什么意思
算法竞赛,指的是以算法(和数据结构)为核心主题的编程竞赛。
算法竞赛一般要求在规定时间内做若干道题目,并以编程的方式解决问题,可以使C/C++/Java等语言。算法竞寒陵猛中较为出名的有:国际大学生程序设计竞赛(ICPC),中国大学生程序设计竞赛(CCPC),蓝桥杯…参加竞赛对于自身能力的提高以及日后就业、考研都有一定的帮助。
3、培养计算思维和逻辑思维。一道算法题往往需要综合多种能力,例如数据结构、算法知识、数学方法、流程和逻辑等,这是计算思维和逻辑思维能力的体现。
4、培养团队合作精神。在软件行业,团队合作非常重察汪兄要。像ICPC、CCPC这样的团队赛,把对团队合作的要求放在了重要位置。