java的二維數(shù)據(jù)的長度可以使用如下代碼表示:
創(chuàng)新互聯(lián)公司憑借專業(yè)的設(shè)計團(tuán)隊扎實的技術(shù)支持、優(yōu)質(zhì)高效的服務(wù)意識和豐厚的資源優(yōu)勢,提供專業(yè)的網(wǎng)站策劃、網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計、網(wǎng)站優(yōu)化、軟件開發(fā)、網(wǎng)站改版等服務(wù),在成都十載的網(wǎng)站建設(shè)設(shè)計經(jīng)驗,為成都上千家中小型企業(yè)策劃設(shè)計了網(wǎng)站。
int?a[2][2];
int?len1=a.length;行長度
int?len2=a[i].length.列長度
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("請輸入數(shù)字:");
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("輸入的不是數(shù)字,請重新輸入!");
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+",行下標(biāo)為:"+x+",?列下標(biāo)為:"+y);
}
}
//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] //通過類名調(diào)用方法inputB()
A cat=new A();
A dog=new A();
[代碼7] //cat調(diào)用方法setA(int a)將cat的成員a的值設(shè)置為200
[代碼8] //cat調(diào)用方法setB(int b)將cat的成員b的值設(shè)置為400
[代碼9] //dog調(diào)用方法setA(int a)將dog的成員a的值設(shè)置為300
[代碼10] //dog調(diào)用方法setB(int b)將dog的成員b的值設(shè)置為800
[代碼11] //cat調(diào)用方法inputA()
[代碼12] //cat調(diào)用方法inputB()
[代碼13] //dog調(diào)用方法inputA()
[代碼14] //dog調(diào)用方法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的形參設(shè)錯了。但200,400,300,800是可以的。只是將int改為float.
因為你把n和c 定義為static ,而且初始化為0,。數(shù)組也為靜態(tài)的,一個類中靜態(tài)的變量在這個類加載的時候就會執(zhí)行,所以當(dāng)你這類加載的時候,你的數(shù)組static int[] v = new int[n];
static int[] w = new int[n];
就已經(jīng)初始化完畢,而且數(shù)組大小為0。在main方法里動態(tài)改變n的值是改變不了已經(jīng)初始化完畢的數(shù)組的大小的,因為組已經(jīng)加載完畢。
我建議你可以在定義n,c是就為其賦初值。比如(static int n=2 static int c=3)
有點問題:
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;
}
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));?//?動態(tài)規(guī)劃表
}
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īng)裝了j的重量時,能夠獲得的最大價值
dp[i][j]?=?Math.max(dp[i][j],?value[i]?+?dp[i?+?1][j?+?weight[i]]);
//?當(dāng)背包重量為j時,要么沿用剛剛裝的,本次不裝,最大價值dp[i][j],要么就把這個重物裝了,那么此時背包裝的重量為j+weight[i],
//?用本次的價值value[i]加上背包已經(jīng)裝了j+weight[i]時還能獲得的最大價值,因為是從底下往上,剛剛上一步算過,可以直接用dp[i+1][j+weight[i]]。
//?然后選取本次不裝weight[i]重物時獲得的最大價值以及本次裝weight[i]重物獲得的最大價值兩者之間的最大值
}
}
}
return?dp[0][0];
}
}
網(wǎng)站題目:二維背包java代碼,背包 java
標(biāo)題URL:http://aaarwkj.com/article18/dssgodp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供域名注冊、品牌網(wǎng)站設(shè)計、網(wǎng)站制作、定制網(wǎng)站、手機網(wǎng)站建設(shè)、品牌網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)