「java算法预处理例子」java算法模型
本篇文章给大家谈谈java算法预处理例子,以及java算法模型对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、常用的算法在java里边怎么做,例
- 2、java中快速排序的算法举个例子
- 3、用Java写一个算法,把一串数字,所有可能的和按顺序排列,并计算每个和出现的次数
- 4、java算法,例子N个苹果放到20个袋子中,操作时间为4个小时,其中每个袋子的各苹果放入时间间隙大于30分钟
常用的算法在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算法预处理例子的信息别忘了在本站进行查找喔。