「经典算法题讲解java」算法刷题宝典
今天给各位分享经典算法题讲解java的知识,其中也会对算法刷题宝典进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
java算法题,求解释
你的这3个返回条件:
if((90-sum) 10*(10-count))//如果剩下的次数都打10分,也都不够90,那剩下的不用继续递归了
return;
if(count 10)//如果打枪超过10次,返回
return;
if(sum == 90 count == 10) {//只有刚好10次并且90分,才算作1次
++times;
return;
}
count表示的是你已经打枪的次数,所以每进入一轮方法,就将count+1
shoot(0, 0);而你的初始次数是从0开始的
所以
for(int i=0; i11; i++) //sum分数,count次数
//for遍历的是本轮可能得到的分数,而进入for循环表示本轮打过了,当然要在打枪次数上+1
shoot(sum+i, count+1);
这个函数的意思就是
static void shoot(int sum, int count) {
//确定上一轮是不是最后一轮,如果是,满不满足90分,如果不是,剩下的轮还有没有肯能凑够
if((90-sum) 10*(10-count))
return;
if(count 10)
return;
if(sum == 90 count == 10) {
++times;
return;
}
int count1=count+1;//上轮不是最后一轮,剩下的有可能凑够90分,本轮打枪
for(int i=0; i11; i++) //sum分数,count次数
shoot(sum+i, count1);//它基本上就是这么个意思
}
这道算法题怎么解,用java语言解题
做了一下,代码如下,楼主可以验证看看,有不对的地方可以找我改:
import java.io.IOException;
import java.util.Scanner;
public class Test {
public static void main(String[] args) throws IOException {
Scanner sc=new Scanner(System.in);
System.out.print("请输入2个整数(以,隔开):");
String str= sc.nextLine();
int n=Integer.parseInt(str.split(",")[0]),m=Integer.parseInt(str.split(",")[1]),flag=0;
long num=(long) Math.pow(10,n);
int[] numArray=new int[m];
String tempA="",tempB="";
for(int i=0;im;i++){
System.out.print("请输入第"+(i+1)+"个整数:");
numArray[i]=sc.nextInt();
tempA=numArray[i]+"";
flag=0;
for(int j=0;ji;j++){
tempB=numArray[j]+"";
if(tempA.startsWith(tempB)){
flag=1;
break;
}else if(tempB.startsWith(tempA) tempB.length()!=tempA.length()){
flag=1;
num-=(long) Math.pow(10,n-tempA.length())-(long) Math.pow(10,n-tempB.length());
break;
}
}
if(flag==0)num-=(long) Math.pow(10,n-tempA.length());
}
System.out.println(num);
}
}
示例1:
请输入2个整数(以,隔开):7,3
请输入第1个整数:0
请输入第2个整数:1
请输入第3个整数:911
7990000
示例2:
请输入2个整数(以,隔开):10,3
请输入第1个整数:0
请输入第2个整数:1
请输入第3个整数:911
7990000000
示例3:
请输入2个整数(以,隔开):3,2
请输入第1个整数:1
请输入第2个整数:11
900
楼主若觉得有所帮助,望采纳,谢谢!
java经典算法题——猴子吃桃
public class Monkey
{
public static void main(String[] args)
{
int sum=0,remain=1;
//每天吃剩的桃子加一个正好是前一天桃子的一半,每天桃子的总数就是前一天剩下桃子的数量
for(int day=9;day=1;day--)
{
sum=(remain+1)*2;
remain=sum;
System.out.println("第"+day+"天还剩"+remain+"个桃子");
}
System.out.println(sum);
}
}
关于经典算法题讲解java和算法刷题宝典的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
发布于:2022-12-05,除非注明,否则均为
原创文章,转载请注明出处。