二维背包java代码,背包 java

java中的二维数组的长度怎么用代码表示?行的长度?

java的二维数据的长度可以使用如下代码表示:

创新互联公司凭借专业的设计团队扎实的技术支持、优质高效的服务意识和丰厚的资源优势,提供专业的网站策划、网站建设、成都网站设计、网站优化、软件开发、网站改版等服务,在成都十载的网站建设设计经验,为成都上千家中小型企业策划设计了网站。

int a[2][2];

int len1=a.length;行长度

int len2=a[i].length.列长度

求java代码 二维数组的最大值

import java.util.Scanner;

public class TestArray {

public static void main(String[] args) {

int nums[][] = new int[3][4];

Scanner scanner = new Scanner(System.in);

System.out.println("请输入数字:");

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

for (int j = 0; j  4; j++) {

try{

int tmpInt = scanner.nextInt();

nums[i][j] = tmpInt;

}catch (Exception e) {

System.out.println("输入的不是数字,请重新输入!");

scanner.nextLine();

j--;

}

}

System.out.println("第"+(i+1)+"行输入完毕");

}

int max = nums[0][0];

int x=0;

int y=0;

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

for (int j = 0; j  4; j++) {

if(nums[i][j]max){

max = nums[i][j];

x = i;

y = j;

}

}

}

System.out.println("最大值为:"+max+",行下标为:"+x+", 列下标为:"+y);

}

}

求这段JAVA程序代码

//Example.java

class A{

float a;

static float b;

void setA(float a ){

this.a = a;

}

void setB(float b){

this.b = b;

}

float getA() {

return a;

}

float getB() {

return b;

}

void inputA() {

System.out.println(a);

}

static void inputB() {

System.out.println(b);

}

}

public class Example {

public static void main (String args[]){

/*代码5] //通过类名操作类变量b,并赋值100

[代码6] //通过类名调用方法inputB()

A cat=new A();

A dog=new A();

[代码7] //cat调用方法setA(int a)将cat的成员a的值设置为200

[代码8] //cat调用方法setB(int b)将cat的成员b的值设置为400

[代码9] //dog调用方法setA(int a)将dog的成员a的值设置为300

[代码10] //dog调用方法setB(int b)将dog的成员b的值设置为800

[代码11] //cat调用方法inputA()

[代码12] //cat调用方法inputB()

[代码13] //dog调用方法inputA()

[代码14] //dog调用方法inputB()*/

A.b = 100;

A.inputB();

A cat = new A();

A dog = new A();

cat.setA(200);

cat.setB(300);

dog.setA(300);

dog.setB(800);

cat.inputA();

cat.inputB();

dog.inputA();

dog.inputB();

}

}

有一个要说明的是,setA()与setB()的形参是浮点型的,所以如楼上所说,楼主代码7到代码10的形参设错了。但200,400,300,800是可以的。只是将int改为float.

_'>回溯法解决0-1背包问题 java写的 求大神指点~~~~(>_

因为你把n和c 定义为static ,而且初始化为0,。数组也为静态的,一个类中静态的变量在这个类加载的时候就会执行,所以当你这类加载的时候,你的数组static int[] v = new int[n];

static int[] w = new int[n];

就已经初始化完毕,而且数组大小为0。在main方法里动态改变n的值是改变不了已经初始化完毕的数组的大小的,因为组已经加载完毕。

我建议你可以在定义n,c是就为其赋初值。比如(static int n=2 static int c=3)

关于这个java语言描述的0-1背包问题是否有错误?

有点问题:

public static void knapsack(int[]v,int[]w,int c,int[][]m)

{

int n=v.length-1;

int jMax=Math.min(w[n]-1,c);

for(int j=0;j=jMax;j++)

m[n][j]=0;

for(int j=w[n];j=c;j++)

m[n][j]=v[n];

for(int i=n-1;i1;i--)

{

jMax=Math.min(w[i]-1,c);

for(int j=0;j=jMax;j++)

m[i][j]=m[i+1][j];

for(int j=w[i];j=c;j++)

m[i][j]=Math.max(m[i+1][j],m[i+1][j-w[i]]+v[i]);

}

m[1][c]=m[2][c];

if(c=w[1])

m[1][c]=Math.max(m[1][c],m[2][c-w[1]]+v[1]);

}

public static void traceback(int[][]m,int[]w,int c,int[]x)

{

int n=w.length-1;

for(int i=1;in;i++) {

if(m[i][c]==m[i+1][c])x[i]=0;

else {

x[i]=1;

c-=w[i];

}

x[n]=(m[n][c]0)?1:0;

}

//int n=w.length-1;

for(int i=1;in;i++)

if(m[i][c]==m[i+1][c])x[i]=0;

else {

x[i]=1;

c-=w[i];

}

x[n]=(m[n][c]0)?1:0;

}

0-1背包问题java代码

import java.io.BufferedInputStream;

import java.util.Scanner;

public class test {

public static int[] weight = new int[101];

public static int[] value = new int[101];

public static void main(String[] args) {

Scanner cin = new Scanner(new BufferedInputStream(System.in));

int n = cin.nextInt();

int W = cin.nextInt();

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

weight[i] = cin.nextInt();

value[i] = cin.nextInt();

}

cin.close();

System.out.println(solve(0, W, n)); // 普通递归

System.out.println("=========");

System.out.println(solve2(weight, value, W)); // 动态规划表

}

public static int solve(int i, int W, int n) {

int res;

if (i == n) {

res = 0;

} else if (W  weight[i]) {

res = solve(i + 1, W, n);

} else {

res = Math.max(solve(i + 1, W, n), solve(i + 1, W - weight[i], n) + value[i]);

}

return res;

}

public static int solve2(int[] weight, int[] value, int W) {

int[][] dp = new int[weight.length + 1][W + 1];

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

for (int j = W; j = 0; --j) {

dp[i][j] = dp[i + 1][j]; // 从右下往左上,i+1就是刚刚记忆过的背包装到i+1重量时的最大价值

if (j + weight[i] = W) { // dp[i][j]就是背包已经装了j的重量时,能够获得的最大价值

dp[i][j] = Math.max(dp[i][j], value[i] + dp[i + 1][j + weight[i]]);

// 当背包重量为j时,要么沿用刚刚装的,本次不装,最大价值dp[i][j],要么就把这个重物装了,那么此时背包装的重量为j+weight[i],

// 用本次的价值value[i]加上背包已经装了j+weight[i]时还能获得的最大价值,因为是从底下往上,刚刚上一步算过,可以直接用dp[i+1][j+weight[i]]。

// 然后选取本次不装weight[i]重物时获得的最大价值以及本次装weight[i]重物获得的最大价值两者之间的最大值

}

}

}

return dp[0][0];

}

}

网站题目:二维背包java代码,背包 java
标题URL:/article18/dssgodp.html

成都网站建设公司_创新互联,为您提供域名注册品牌网站设计网站制作定制网站手机网站建设品牌网站制作

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

成都定制网站建设