「java算法预处理例子」java算法模型

博主:adminadmin 2023-03-21 19:14:07 526

本篇文章给大家谈谈java算法预处理例子,以及java算法模型对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

常用的算法在java里边怎么做,例

(一) 问题描述

给定由n个整数(可能为负整数)组成的序列a1,a2,a3,···,an,求该序列的子段和的最大值。当所有整数均为负整数是定义其最大子段和为0,一次定义,所求的最优质值为:max{0、max子段和}。

(二) 算法描述

动态规划法的基本思想:

动态规划算法通常用于求解具有某种最优性质的问题。在这类问题中,可能会有许多可行解。每一个解都对应于一个值,我们希望找到具有最优值的解。

算法设计:

#include "stdafx.h"

int MaxSum(int a[],int n,int Start,intEnd){

intsum=0;

int*b,t;

b=newint[n+1];

b[0]=0;

for(inti=1;i=n;i++){

if(b[i-1]0){

b[i]=b[i-1]+a[i];

}

else {

b[i]=a[i];t=i;

}

if(b[i]sum){

sum=b[i];

Start=t;

End=i;

}

}

delete[]b;

returnsum;

}

int main(int argc, char* argv[])

{

inta[7]={0,-2,11,-4,13,-5,-2},sum,Start,End,i;

sum=MaxSum(a,6,Start,End);

for(i=Start;i=End;i++){

printf("%d ",a[i]);

}

printf("\n%d\n",sum);

getchar();

getchar();

return0;

java中快速排序的算法举个例子

package person.test;

import java.util.ArrayList;

import java.util.Arrays;

import java.util.Collections;

import java.util.List;

import java.util.Random;

/**

* class name: RapidSort

* description: Java快速排序法:数组和集合

* @author Jr

*

*/

public class RapidSort {

private Random ran = new Random(); // 声明一个全局变量ran,用来随机生成整数

/**

* method name: sortArray

* description: 对数组的快速排序,只能用于int[]类型的数组

* @return

*/

private void sortArray() {

int[] array = new int[10]; // 声明数组长度为10

for (int i = 0 ; i array.length; i++) {

array[i] = ran.nextInt(10) + 1; // 数组赋值

}

Arrays.sort(array);

System.out.println(Arrays.toString(array));

}

/**

* method name: sortList

* description: 对集合的快速排序,可以用于ListObject类型数组,

* 隐含意思就是对所有类型数组都适用

* @return

*/

private void sortList() {

ListInteger list = new ArrayListInteger();

for (int i = 0 ; i 10; i++) {

list.add(ran.nextInt(10) + 1); // 给集合赋10个值

}

Collections.sort(list);

System.out.println(list);

}

public static void main(String[] args) {

RapidSort rs = new RapidSort();

rs.sortArray();

rs.sortList();

}

}

用Java写一个算法,把一串数字,所有可能的和按顺序排列,并计算每个和出现的次数

楼主你好

应你的要求 我只做了加一位的和加两位的

算法类代码如下:

public class CountSumClass {

private String number;

private String result = new String("");

public CountSumClass() {

number = new String();

}

public CountSumClass(String str) {

number = str;

}

public String getResult() {

return result;

}

public void addOne() {

int x,y;

for (int i = 0; i number.length()-1; i++) {

x = (int)number.charAt(i) - 48;

for(int j = i+1; jnumber.length(); j++) {

y = (int)number.charAt(j) - 48;

result += x+"+"+y+"="+(x+y)+"\n";

}

}

y=0;

for (int i = 0; inumber.length(); i++) {

x = (int)number.charAt(i) - 48;

y += x;

if(i == number.length()- 1) {

result += x+"="+y;

} else {

result += x+"+";

}

}

}

public void addTwo() {

int x,y,z;

result += "\n";

for (int i = 0; inumber.length()-1; i++) {

String substr = number.substring(i,i+2);

x = Integer.parseInt(substr);

z = (x%10) * 10 + (x/10);

for(int j=0; jnumber.length(); j++) {

if(j!=i j!=i+1) {

y = (int)number.charAt(j) - 48;

result += x+"+"+y+"="+(x+y)+"\n";

result += z+"+"+y+"="+(z+y)+"\n";

}

}

}

}

public String toString() {

return result;

}

}

希望能帮助你哈

java算法,例子N个苹果放到20个袋子中,操作时间为4个小时,其中每个袋子的各苹果放入时间间隙大于30分钟

需要使用多线程

package org.xuyh.design;

import java.util.Scanner;

/**

 * N个苹果放到20个袋子中,操作时间为4个小时,其中每个袋子的各苹果放入时间间隙大于30分钟

 * @author XuYanhang

 *

 */

public class AppleOperation implements Runnable{

public static final int ONE_SECOND = 1000;

private final int[] packages;

public final int operationTime;

public final int minSpacetTime;

private int appleCount;

private boolean timeEnd = false;

public AppleOperation(int appleCount,int packCount,int operationTime,int minSpacetTime){

  this.appleCount = appleCount;

  packages = new int[packCount];

  this.operationTime = operationTime;

  this.minSpacetTime = minSpacetTime;

 }

public int getAppleCount(){

  return appleCount;

 }

public int getPackCount(){

  return packages.length;

 }

public int getOperationTime(){

  return operationTime;

 }

public boolean hasEnd(){

  return timeEnd || appleCount == 0;

 }

public synchronized void setTimeEnd(){

  timeEnd = true;

 }

public void run() {

  int pack = Integer.parseInt(Thread.currentThread().getName());

  while(appleCount0){

   synchronized(this){

    if(hasEnd()){

     break;

    }

    appleCount--;

    packages[pack]++;

    System.out.println("一个苹果放入了第"+(pack+1)+"个袋子中,还剩"+appleCount+"个苹果");

   }

   for(int i = 0 ; i minSpacetTime ; i++){

    synchronized(this){

     if(hasEnd()){

      break;

     }

    }

    try {

     Thread.sleep(ONE_SECOND);

    } catch (InterruptedException e) {

     e.printStackTrace();

    }

   }

  }

  synchronized(this){

   System.out.println("第"+(pack+1)+"个袋子最终有"+packages[pack]+"个苹果");

  }

 }

//Test main method

 public static void main(String[] args) {

  Scanner scanner = new Scanner(System.in);

  

  int appleCount = -1;

  do{

   System.out.print("N个苹果放到20个袋子中,操作时间为4个小时,其中每个袋子的各苹果放入时间间隙大于30分钟。\n"

     + "输入苹果总数N:");

   String string = scanner.next();

   if(null != string string.matches("^\\d{1,8}$")){

    appleCount = Integer.parseInt(string);

   }

  }while(appleCount == -1);

  

  scanner.close();

AppleOperation operation = new AppleOperation(appleCount,20,4*60*60,30*60);

new WaitThread(operation).start();

for (int i = 0; i operation.getPackCount(); i++) {

   

   Thread thread = new Thread(operation,""+i);

   

   thread.start();

   

  }

  

 }

static class WaitThread extends Thread{

private AppleOperation operation;

public WaitThread(AppleOperation operation){

   this.operation = operation;

  }

  

  public void run(){

   try {

    Thread.sleep(operation.getOperationTime()*ONE_SECOND);

   } catch (InterruptedException e) {

    e.printStackTrace();

   }

   

   operation.setTimeEnd();

System.out.println("时间到,苹果装袋操作结束,最后为装袋的苹果个数:"+operation.getAppleCount());

}

 }

}

这里我们额外启动了21个线程,其中一个是计4小时的定时的,其他20个是向每个袋子中放苹果的线程。

java算法预处理例子的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java算法模型、java算法预处理例子的信息别忘了在本站进行查找喔。