「经典算法题讲解java」算法刷题宝典

博主:adminadmin 2022-12-05 20:39:05 60

今天给各位分享经典算法题讲解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和算法刷题宝典的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-12-05,除非注明,否则均为首码项目网原创文章,转载请注明出处。