java動態規劃,java動態規劃最短路徑

本文目錄一覽:

java 動態規劃矩陣多少種走法

import java.util.Scanner;

public class zhidao3

{

public static void main(String[] args)

{

Scanner scanner = new Scanner(System.in);

int T = scanner.nextInt();

int out[] = new int[T];

scanner.nextLine();

for(int t=0;tT;t++)

{

String a = scanner.nextLine();

char[] ch=a.toCharArray();

int f[][]= new int[ch.length+1][2];

if (ch[0]=’Z’ch[0]=’A’)

{

f[0][1]=2;

f[0][0]=2;

}

if (ch[0]=’z’ch[0]=’a’)

{

f[0][1]=1;

f[0][0]=1;

}

for(int i=1 ;i=ch.length;i++)

{

if (ch[i-1]=’Z’ch[i-1]=’A’)

{

f[i][0] = f[i-1][1] + 2;

f[i][1] = f[i-1][1] + 1;

}

if(ch[i-1]=’z’ch[i-1]=’a’)

{

f[i][0] = f[i-1][0] + 1;

f[i][1] = f[i-1][0] + 2;

}

}

out[t] = Math.min(f[ch.length-1][0],f[ch.length-1][1]);

}

for(int t=0;tT;t++){

System.out.println(out[t]);//最後統一輸出

}

scanner.close();

}

}

常用的演算法在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實現最小

import java.util.Arrays;

public class Test {

public static void getCha(int [] a,int []b){

int min =Integer.MAX_VALUE;

int sss=0;

int kkk = 0;

int c = 0;

int d = 0;

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

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

int temp = Math.abs(a[i]-b[j]);

if(tempmin){

min = temp;

sss = a[i];

kkk = b[j];

c=i;

d=j;

}

}

}

System.out.println(“最大差距:”+min+”數組A[“+c+”]”+sss+”數組B[“+d+”]”+kkk);

}

public static void main(String[] args) {

int []a = new int[8];

int []b = new int[12];

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

a[i] = (int)( Math.random()*100);

}

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

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

b[i] = (int) (Math.random()*100);

}

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

getCha(a,b);

}

}

JAVA動態規劃,最長遞增子序列的代碼太難理解,求大神幫我講解一下!

第一層的 if 邏輯表示 如果新的一個數A[i]對於 B[]中的數來說是遞增的,則len加1,這是記錄遞增數列長度的主要邏輯。else中的邏輯保證B[]中的數列是最新的遞增數列。

舉個例子,如果A數組為[1,2,3,4,5, 3.1, 3.2, 3.3, 3.4]

當i=4時 len=4 B=[x,1,2,3,4,x] 循環結束後 len=5 B=[x,1,2,3,4,5] 第一層判斷走if

當i=5時 len=5 B=[x,1,2,3,4,5] 循環結束後 len=5 B=[x,1,2,3,3.1,5] 第一層判斷走else

當i=6時 len=5 B=[x,1,2,3,3.1,5] 循環結束後 len=5 B=[x,1,2,3,3.1,3.2] 第一層判斷走else

當i=7時 len=5 B=[x,1,2,3,3.1,3.2] 循環結束後 len=6 B=[x,1,2,3,3.1,3.2,3.3] 第一層判斷走else

其中第一層的else中做的工作就是把B從[x,1,2,3,4,5] 一步步變成 [x,1,2,3,3.1,3.2],最終B[]的最後一個元素變成3.2, 在下一次A[i]=3.3的時候,就又會走第一次if的邏輯(len加1)了。

java動態規劃 計算數n由k個數相加而成的情況數

public class MyClass {

    public static void main(String[] args) {

        System.out.println(” result count:” + method(6, 3));

    }

    public static int method(int n, int k) {

        ListListInteger list = new ArrayList();

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

            if (i == 0) {

                for (int j = 1; j  n; j++) {

                    ListInteger li = new ArrayList();

                    li.add(j);

                    list.add(li);

                }

                continue;

            }

            ListListInteger listNew = new ArrayList();

            for (ListInteger integers : list) {

                for (int j = integers.get(integers.size() – 1); j  n; j++) {

                    ListInteger li = new ArrayList();

                    li.addAll(integers);

                    li.add(j);

                    listNew.add(li);

                    if (i + 1 == k) {

                        int res = 0;

                        for (Integer integer : li) {

                            res += integer;

                        }

                        if (res != n) {

                            listNew.remove(li);

                        }

                    }

                }

            }

            list.clear();

            list.addAll(listNew);

        }

        for (ListInteger integers : list) {

            for (Integer integer : integers) {

                System.out.print(integer + “\t”);

            }

            System.out.println();

        }

        return list.size();

    }

}

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/307020.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2025-01-02 18:05
下一篇 2025-01-02 18:06

相關推薦

  • 如何查看Anaconda中Python路徑

    對Anaconda中Python路徑即conda環境的查看進行詳細的闡述。 一、使用命令行查看 1、在Windows系統中,可以使用命令提示符(cmd)或者Anaconda Pro…

    編程 2025-04-29
  • Java JsonPath 效率優化指南

    本篇文章將深入探討Java JsonPath的效率問題,並提供一些優化方案。 一、JsonPath 簡介 JsonPath是一個可用於從JSON數據中獲取信息的庫。它提供了一種DS…

    編程 2025-04-29
  • java client.getacsresponse 編譯報錯解決方法

    java client.getacsresponse 編譯報錯是Java編程過程中常見的錯誤,常見的原因是代碼的語法錯誤、類庫依賴問題和編譯環境的配置問題。下面將從多個方面進行分析…

    編程 2025-04-29
  • Java騰訊雲音視頻對接

    本文旨在從多個方面詳細闡述Java騰訊雲音視頻對接,提供完整的代碼示例。 一、騰訊雲音視頻介紹 騰訊雲音視頻服務(Cloud Tencent Real-Time Communica…

    編程 2025-04-29
  • QML 動態載入實踐

    探討 QML 框架下動態載入實現的方法和技巧。 一、實現動態載入的方法 QML 支持從 JavaScript 中動態指定需要載入的 QML 組件,並放置到運行時指定的位置。這種技術…

    編程 2025-04-29
  • Java Bean載入過程

    Java Bean載入過程涉及到類載入器、反射機制和Java虛擬機的執行過程。在本文中,將從這三個方面詳細闡述Java Bean載入的過程。 一、類載入器 類載入器是Java虛擬機…

    編程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介紹

    本文將詳細介紹Java Milvus SearchParam withoutFields的相關知識和用法。 一、什麼是Java Milvus SearchParam without…

    編程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java語言中的一個版本,於2014年3月18日發布。本文將從多個方面對Java 8中某一周的周一進行詳細的闡述。 一、數組處理 Java 8新特性之一是Stream…

    編程 2025-04-29
  • Java判斷字元串是否存在多個

    本文將從以下幾個方面詳細闡述如何使用Java判斷一個字元串中是否存在多個指定字元: 一、字元串遍歷 字元串是Java編程中非常重要的一種數據類型。要判斷字元串中是否存在多個指定字元…

    編程 2025-04-29
  • VSCode為什麼無法運行Java

    解答:VSCode無法運行Java是因為默認情況下,VSCode並沒有集成Java運行環境,需要手動添加Java運行環境或安裝相關插件才能實現Java代碼的編寫、調試和運行。 一、…

    編程 2025-04-29

發表回復

登錄後才能評論