「java算法题吃菜问题」java算法工程师

博主:adminadmin 2023-01-20 05:21:11 348

本篇文章给大家谈谈java算法题吃菜问题,以及java算法工程师对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

关于Java语言的简单问题

1、不能。内存泄露和死循环、程序崩溃都是因为程序员的原因,没有任何一款软件或者语言能做到避免。

2、java现在出到java2,另外,java是一种语言,而你说的vc++那是一个开发工具。。。这两个怎么比?难道能说c++比Eclipse优秀?

3、学完c++以后再学java很明显的一点就是程序的错误会少,因为c++面向底层的能力使得它的代码出现bug的几率要比java多。如果反过来则错误会很多。再说一遍:程序崩溃时程序员设计的问题,跟语言无关!

4、编程效率分为开发效率和运行效率,开发效率最高的我认为还是java,然后是c#,然后才是c++;运行效率是c++,c#和java(很多人认为c#的运行效率已经不次于c++了,这点没有多少人证明,姑且听之).特点:java开发简单,c++运行高效,c#语法与java及其相似,另外效率要比java高很多.

5、这点无法跟你说。人家用几本书才能说明的问题,这里也不可能通过几百字能给你解释清楚。看看java编程思想还是不错的。

6、安全性。如果要从语言上限制的话,当然是java最好了,因为它不提供直接访问底层的功能,所以安全性要稍微高些。不过,java也能编写危险的程序,所以,安全性并不是由语言带来的,要不然java语言一出,世界上的软件安全检测员都失业算了!安全性来自于程序员的设计,自己多练练吧!

java算法题。小菜鸟的大问题。面试题。

帮你写出来了:用 欧几里得最大公约数 算法,然后判断:

如果分子 = 分母或者 gcd 结果 b 值不是 1 就不是最简真分数,否则就是。

我这个用正则表达式先判断输入格式了。

---------------------------------------------------------------

import java.util.regex.Pattern;

import java.io.*;

public class Demo {

public static void main (String args[]) throws IOException {

Pattern regex = Pattern.compile("[0-9]*/[0-9]*");

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

String num = "";

while (!(num = br.readLine()).equals("-1")) {

if (!regex.matcher(num).matches()) {

System.out.println("格式不正确,请重新输入!");

continue;

}

int a = Integer.parseInt(num.substring(0, num.indexOf('/')));

int b = Integer.parseInt(num.substring(num.indexOf('/')+1));

if (a = b || !isRelativelyPrime(a, b))

System.out.println(num + "不是最简真分数");

else

System.out.println(num + "是最简真分数");

}

}

private static boolean isRelativelyPrime (int a, int b) {

int tmp = 0;

while (a  0) {

tmp = b % a;

b = a;

a = tmp;

}

if (b == 1)

return true;

else

return false;

}

}

----------------------------- 运行结果 -------------------------------

Java简单算法问题

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

public class AlisandaNumber {

private static final int MAX_INDEX = 1000; // 可以先把这个常量改为1-6,验证正确性

public static void main(String[] args) {

int a = 0;

int index = 0;

while(index  MAX_INDEX) {

a += 6; // 每次循环自增6,由题目规律可知A是6的倍数

boolean breakOut = false;

// 最大的约数为此数的平方根,因为如果是两个平方根相乘的话,剩下的就只有1了

int maxNum = (int) Math.ceil(Math.sqrt(a));

p:

for(int p = 1; p = maxNum; p ++) {

if(a % p != 0) {

continue; // 如果不是约数的话,没必要考虑,下同

}

// 最大约数为平方根的相反数,原理同上

maxNum = (int) Math.ceil(Math.sqrt(a / p));

for(int q = -1; q = -maxNum; q --) { // q和r必为负数

if(a % q != 0) {

continue;

}

int r = a / (p * q);

int nonZero = p * q + p * r + q * r;

if (nonZero == 0) {

continue;

}

if((a == p * q * r)  (a == (p * q * r) / (nonZero))) {

index ++;

breakOut = true;

break p; // 跳出外层循环

}

}

}

if(breakOut) {

System.out.println(String.format("第%d个压力山大数是%d", index, a));

}

}

}

}

一个有关于java的算法问题,求高手协做

//参考别人的,自己就懒得写了,你拿去参考参考...

import java.util.ArrayList;

import java.util.HashMap;

import java.util.HashSet;

import java.util.List;

import java.util.Map;

import java.util.Set;

public class Dijkstra {

private int[][] graph;// 加权有向图

private int start;// 源点编号 从 0开始

private int dimention;

static int INF = Integer.MAX_VALUE / 100;

// 用于标记顶点是否已经计算

private SetInteger vertexSet = new HashSetInteger();

// 存储结果,Map的key对应各终点编号,value对应路径编号列表。

private MapInteger, ListInteger pathListMap = new HashMapInteger, ListInteger();

public Dijkstra(int[][] graph, int start) {

this.graph = graph;

this.start = start;

this.dimention = graph.length;

calculate();

}

private void calculate() {

// 初始化

for (int end = 0; end dimention; end++) {

if (end == start) {

continue;

}// 起始点自己的路径排除。

ListInteger pathList = new ArrayListInteger();

pathList.add(start);// 每条路径的起始点都为start,pathList只记录编号,不记录路径权值

pathList.add(end);// 每条路径的第二个参数为终点编号

pathListMap.put(end, pathList);

}

// 计算主体

for (int bridge = 0; bridge dimention; bridge++) {

if (bridge == start) {

continue;

}

if (!vertexSet.contains(bridge)) {// 确保每个基点只循环计算一次

for (int next = 0; next dimention; next++) {

if (next == start || next == bridge) {

continue;

}

if (startTo(bridge) + getRawLength(bridge, next) startTo(next)) {

ListInteger pathList = pathListMap.get(next);

ListInteger bridgePathList = pathListMap.get(bridge);

// 清空,使用新的

pathList.clear();

pathList.addAll(bridgePathList);

pathList.add(next);

}

}

}

vertexSet.add(bridge);

}

// 检查,是否桥接的路径都被更新

for (int end = 0; end dimention; end++) {

if (end == start) {

continue;

}

ListInteger pathList = pathListMap.get(end);

int size = pathList.size();

if (size 2) {

for (int end2 = 0; end2 dimention; end2++) {

int isEnd = pathList.get(size - 2);

if (end2 == isEnd) {

pathList.clear();

pathList.addAll(pathListMap.get(end2));

pathList.add(end);

}

}

}

}

}

private int startTo(int end) {

int pathLen = 0;

ListInteger pathList = pathListMap.get(end);

for (int i = 0; i pathList.size() - 1; i++) {

pathLen += graph[pathList.get(i)][pathList.get(i + 1)];

}

return pathLen;

}

private int getRawLength(int start, int end) {

if (end == start) {

return 0;

}

return graph

本篇文章给大家谈谈java算法题吃菜问题,以及java算法工程师对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

关于java算法题吃菜问题和java算法工程师的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

;

}

public int getLength(int end) {

if (end == start) {

return 0;

}

return startTo(end);

}

public void printResult() {

System.out.println(pathListMap);

}

public MapInteger, ListInteger getPathListMap() {

return pathListMap;

}

public static void main(String[] args) {

/*

* int [][] graph = { { INF, 10, INF, 30, 100}, { INF, INF, 50, INF,

* INF}, { INF, INF, INF, INF, 10}, { INF, INF, 20, INF, 60}, { INF,

* INF, INF, INF, INF}};

*/

int[][] graph = { { INF, INF, 10, INF, 30, 100 },

{ INF, INF, 5, INF, INF, INF },

{ INF, INF, INF, 50, INF, INF },

{ INF, INF, INF, INF, INF, 10 },

{ INF, INF, INF, 20, INF, 60 },

{ INF, INF, INF, INF, INF, INF }, };

int start = 0;

int end = 0;

int length = graph.length;

for (start = 0; start length; start++) {

System.out.println();

Dijkstra dijkstra = new Dijkstra(graph, start);

dijkstra.printResult();

for (end = 0; end length; end++) {

if (end == start) {

continue;

}

int len = dijkstra.getLength(end);

System.out.println(" Length(" + start + "-" + end + ") = "

+ ((len == INF) ? "Infinity" : len));

}

}

}

}

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算法设计问题(贪心算法)

第一、你说的那个东西不叫框架

第二、你用的算法不是多路合并

第三、题目不是让你合并、是让你找出最优解

解答,我晕这题目有啥解答的啊,你不是自己编的吧,假如合并两个有序序列只要m+n-1次比较,那么不单单这两个序列各自有序,同时其中一个序列任意元素大于另外一个序列所有元素

那么答案就是按照k的序号从前想后依次合并啊

关于java算法题吃菜问题和java算法工程师的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。