当前位置:首页 » 操作系统 » javajava算法题目

javajava算法题目

发布时间: 2023-03-12 03:29:26

java算法题:判断并输出101-200中所有素数,代码中单等号与双等号的区别

这是很基础的问题
单= 是赋值运算, 把后面的值赋值给前面的参数
双= 是关系运算, 比较前后两个参数是否相同

注意如果???处, 用单等, 就是赋值运算, 将ture 赋值 给 flag, 所以if中会一直是true, 也会一直执行if中的代码
双== 就是比较了啊, 结果是真 才会执行if中代码

Ⅱ Java简单算法问题


初步做了一个出来,但是效率并不是很高,前100个计算速度还可以,但是往后就很慢了。如果什么时候有空的话可以再看看,先给你代码吧,不知道能不能帮上你

publicclassAlisandaNumber{
privatestaticfinalintMAX_INDEX=1000;//可以先把这个常量改为1-6,验证正确性
publicstaticvoidmain(String[]args){
inta=0;
intindex=0;
while(index<MAX_INDEX){
a+=6;//每次循环自增6,由题目规律可知A是6的倍数
booleanbreakOut=false;

//最大的约数为此数的平方根,因为如果是两个平方根相乘的话,剩下的就只有1了
intmaxNum=(int)Math.ceil(Math.sqrt(a));
p:
for(intp=1;p<=maxNum;p++){
if(a%p!=0){
continue;//如果不是约数的话,没必要考虑,下同
}

//最大约数为平方根的相反数,原理同上
maxNum=(int)Math.ceil(Math.sqrt(a/p));
for(intq=-1;q>=-maxNum;q--){//q和r必为负数
if(a%q!=0){
continue;
}

intr=a/(p*q);
intnonZero=p*q+p*r+q*r;
if(nonZero==0){
continue;
}
if((a==p*q*r)&&(a==(p*q*r)/(nonZero))){
index++;
breakOut=true;
breakp;//跳出外层循环
}
}
}
if(breakOut){
System.out.println(String.format("第%d个压力山大数是%d",index,a));
}
}
}
}



Ⅲ java算法(2个数组 从数组A中取出任意几个数 是否存在于第B个数组中 存在就给a加1)

ps:我的答案只给识货的人看

package;

importjava.util.Arrays;
importjava.util.LinkedList;

publicclassRecursionSubNSort
{
publicstaticvoidmain(String[]args)
{
inta=0;
String[]A={"01","09","11","07","05","02"};
String[]B={"03","08","11","07","06"};
Stringbstr=""+Arrays.toString(B).replaceAll("[\[\],\s]",",")+"";
LinkedList<String[]>list=newLinkedList<String[]>();
recursionSub(list,1,A,0,-1);
for(String[]strings:list)
{
Strings=Arrays.toString(strings);
Stringstr=s.replaceAll("[\[\]]",",");
inti=bstr.split(str).length-1;
a+=i;
System.out.println(s+"出现在B中的次数有:"+i);
}
System.out.println("结果a="+a);
System.out.println("======================================");
list.clear();
a=0;
recursionSub(list,2,A,0,-1);
for(String[]strings:list)
{
Strings=Arrays.toString(strings);
System.out.println("组合"+s);
for(Stringstring:strings)
{
inti=bstr.split(","+string+",").length-1;
a+=i;
System.out.println(string+"在B中出现的次数有:"+i);
}
}
System.out.println("结果a="+a);
System.out.println("======================================");
list.clear();
a=0;
recursionSub(list,5,A,0,-1);
for(String[]strings:list)
{
Strings=Arrays.toString(strings);
System.out.println("组合"+s);
for(Stringstring:strings)
{
inti=bstr.split(","+string+",").length-1;
a+=i;
System.out.println(string+"在B中出现的次数有:"+i);
}
}
System.out.println("结果a="+a);
}

privatestaticLinkedList<String[]>recursionSub(LinkedList<String[]>list,intcount,String[]array,intind,
intstart,int...indexs)
{
start++;
if(start>count-1)
{
returnnull;
}
if(start==0)
{
indexs=newint[array.length];
}
for(indexs[start]=ind;indexs[start]<array.length;indexs[start]++)
{
recursionSub(list,count,array,indexs[start]+1,start,indexs);
if(start==count-1)
{
String[]temp=newString[count];
for(inti=count-1;i>=0;i--)
{
temp[start-i]=array[indexs[start-i]];
}
list.add(temp);
}
}
returnlist;
}
}

Ⅳ java算法面试题

三个for循环,第一个和第二个有啥区别?去掉一个吧
可以用迭代器remove方法,在移除的同时添加。

不知道是你记错了还是题本身就这样,我只想说:
写这代码的是二货么?
1、每个循环的索引都是从0开始,这是什么遍历方式?
2、看这题的目的是想把用户添加到相应的组里,这我就不明白了,新建一个用户的时候就没分配组么?那用户的GroupId哪来的?

3、这是一个操作,难道就不会根据GroupId直接查出用户或者组么?

这哪是优化代码?分明是挖坑。

Ⅳ JAVA算法题目:int数组内取数相加凑数

首先观察数组可以排除几个数:588,4375,5184 因为他们如何相加也不会以0结尾。限于篇幅,部分代码如下,剩余的循环可以自己添加下,采用穷举法:
public class DoMain {

public void doit(){
int[] a = new int[] { 460, 720, 1250, 1800, 2200, 3080, 4100,
6510, 6900, 9000 };
for(int i1=0;i1<a.length;i1++){
for(int i2=i1+1;i2<a.length;i2++){
if(a[i1]+a[i2]==13750){
System.out.println(a[i1]+";"+a[i2]);
}
for(int i3=i2+1;i3<a.length;i3++){
if(a[i1]+a[i2]+a[i3]==13750){
System.out.println(a[i1]+";"+a[i2]+";"+a[i3]);
}
for(int i4=i3+1;i4<a.length;i4++){
if(a[i1]+a[i2]+a[i3]+a[i4]==13750){
System.out.println(a[i1]+";"+a[i2]+";"+a[i3]+";"+a[i4]);
}
for(int i5=i4+1;i5<a.length;i5++){
if(a[i1]+a[i2]+a[i3]+a[i4]+a[i5]==13750){
System.out.println(a[i1]+";"+a[i2]+";"+a[i3]+";"+a[i4]+";"+a[i5]);
}
for(int i6=i5+1;i6<a.length;i6++){
if(a[i1]+a[i2]+a[i3]+a[i4]+a[i5]+a[i6]==13750){
System.out.println(a[i1]+";"+a[i2]+";"+a[i3]+";"+a[i4]+";"+a[i5]+";"+a[i6]);
}
for(int i7=i6+1;i7<a.length;i7++){
if(a[i1]+a[i2]+a[i3]+a[i4]+a[i5]+a[i6]+a[i7]==13750){
System.out.println(a[i1]+";"+a[i2]+";"+a[i3]+";"+a[i4]+";"+a[i5]+";"+a[i6]+";"+a[i7]);
}

}
}
}
}
}
}
}

}

public static void main(String[] args) {
DoMain main= new DoMain();
main.doit();
}}

Ⅵ 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);
}
}

热点内容
数控车床电脑编程 发布:2025-08-23 00:40:32 浏览:243
安卓手机如何一键修改序列号 发布:2025-08-23 00:31:33 浏览:428
vsqt编译通过 发布:2025-08-23 00:29:58 浏览:460
android设置sd卡 发布:2025-08-23 00:18:47 浏览:863
混合存储提供商 发布:2025-08-23 00:06:08 浏览:436
行锁算法 发布:2025-08-23 00:05:05 浏览:903
手机编程苹果 发布:2025-08-23 00:02:41 浏览:287
脚本会被杀毒软件 发布:2025-08-22 23:56:03 浏览:140
gta5车文件夹 发布:2025-08-22 23:47:58 浏览:184
编译标准 发布:2025-08-22 23:45:59 浏览:173