草庐IT

java - 把一个整数分成k份

我正在用Java编程,我需要制定一个算法。该算法的要求是:我们有3个整数变量n,m,k;我们想将n分成k部分,这样k部分的总和等于n,每个部分都是1和m之间的整数。我们需要所有可能的整数组合。例如输入集:n=7;m=3;k=4我们可以制定两种不同的组合:7=2+2+2+1和7=3+2+1+1谢谢大家 最佳答案 这个想法是一种回溯算法方法(使用递归),您可以减少参数并获得部分解决方案,然后检查您是否有正确的解决方案。publicclassProblem{privatestaticvoidalgorithm(intn,intk,intm

Java构造函数链方向

我知道有些特殊的类不适用这个一般性问题,但是对于简单的类,当我们有多个构造函数时,一个的参数是另一个的干净子集,调用构造函数是否更好从列表较短的列表中选择较长的列表,反之亦然?为什么?publicclassA{intx;inty;intz;publicA(){this(0);}publicA(intx){this(x,0);}publicA(intx,inty){this(x,y,0);}publicA(intx,inty,intz){this.x=x;this.y=y;this.z=z;//somesetupstuffneededforallA}}或者publicclassA{int

java - 使用 Java Stream API 对数组进行部分降序排序

我需要知道如何使用StreamAPI按降序对原始唯一整数数组进行部分排序。比如有{1,2,3,4,5}这样的数组,我想得到{5,4,3,1,2}-首先是3个最大的元素,然后是其余的。甚至可以使用流吗?我检查了文档-有两种方法skip和limit但它们会更改流内容并从数组的开头开始工作。我可以像这样对整个数组进行排序Arrays.stream(arr).boxed().sorted(Collections.reverseOrder()).mapToInt(Integer::intValue).toArray();但是如何使这个排序部分化呢?我说StreamAPI是因为我希望它写得很好。而

java - 计算图像的颜色数

我有三个不同的图像(jpeg或bmp)。我试图根据每个图像的颜色数量来预测每个图像的复杂性。我怎样才能用Java使它成为可能?谢谢。更新:这些代码不起作用。输出显示1312种颜色,即使它只有纯红色和白色importjava.awt.*;importjava.awt.image.BufferedImage;importjava.io.*;importjava.util.ArrayList;importjavax.imageio.ImageIO;publicclassclutters{publicstaticvoidmain(String[]args)throwsIOException{A

Java LongStream求和int数组元素

因为许多整数在求和时会溢出,所以我需要一个长流来完成这项工作,但它不接受int数组。如何在流式传输时转换每个元素而不是使用long数组?//arrisanint[]LongStreams=Arrays.stream(arr);//errorresult=s.reduce(0,Long::sum);编辑:似乎使用TagirValeev的回答中的方法将整数流变成了长流。LongStreamasLongStream(); 最佳答案 使用IntStream.asLongStream()方法:LongStreams=Arrays.stream

java - 使用 10 个线程处理一个数组

我正在努力提高我的Java技能,但有点不确定如何处理这个多线程应用程序。基本上,该程序读取一个文本文件并找到最大的数字。我在我的搜索算法中添加了一个for循环来创建10个线程,但我不确定它是否真的创建了10个线程。这个想法是为了缩短执行时间,或者至少这是我认为应该发生的事情。有没有办法检查我是否做对了以及执行时间是否确实有所改善?importjava.io.BufferedReader;importjava.io.FileReader;importjava.io.IOException;publicclassProcessDataFile{publicstaticvoidmain(St

java - += int 和 double 转换

这个问题在这里已经有了答案:关闭12年前。PossibleDuplicate:Varyingbehaviorforpossiblelossofprecisioninttesting=0;testing+=2.0上面的代码可以编译。在哪里inttesting=0;testing=testing+2.0;此代码无法编译。知道为什么吗?

java - 将BitSet转换为int [duplicate]

可能重复:BitSettoandfrominteger/long如何将类位集类转换为int(我总是有位集(8)?有什么简单的方法或者我需要循环通过比特集吗? 最佳答案 这应该可以…publicstaticintbitSetToInt(BitSetbitSet){intbitInteger=0;for(inti=0;i我想人们可以使用nextSetBit来提高效率,但这太过分了,只会增加比帮助更多的开销… 关于java-将BitSet转换为int[duplicate],我们在StackOv

java - 根据列对二维 int 数组进行排序的过程

我之前的数组以及排序后我们想要的数组:之前:BoxWeightPriority15052308390642075809之后:BoxWeightPriority39065809150523084207我们在int矩阵中工作:data=newint[BoxNumber][3];排序基于第二列权重。我正在寻找对数据数组进行排序的过程。publicvoidsortC(int[][]temp){if(temp.length>=2){for(inti=1;i0&&hold[1]我试过这个,但不幸的是它没有给出正确的排序我无法弄清楚泡菜。 最佳答案

java - 为什么需要从 double 到 float 而不是从 int 到 byte 的显式类型转换?

考虑以下语句:byteby=5;//工作正常字面量'5'是int类型并且足够小以适合byte类型的变量。编译器在这里进行隐式类型转换(从int到byte)。现在考虑以下场景:floatfl=5.5;//compilationerror文字'5.5'是double类型,也足够小以适合变量类型float。为什么我们需要像这样显式地类型转换:floatfl=(float)5.5;//worksfine为什么编译器不为我们进行浮点类型转换? 最佳答案 在整数版本中,编译器知道所有数字5中的数据可以存储在一个字节中。没有信息丢失。对于浮点值,