CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  J2SE / 基础类

帮帮我 高分求解!

楼主feier00()2006-11-02 23:27:03 在 Java / J2SE / 基础类 提问

0-1背包问题     为什么有错?  
  package   com.sohu;  
   
  public   class   question0_1   {  
  public   static   int[][]   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;i>1;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]);  
  }  
  return   m;  
  }  
   
  /*public   static   void   traceback(int[][]m,int[]w,int   c,int[]x){  
  int   n=w.length-1;  
  for(int   i=1;i<n;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);  
   
  }  
  */  
  public   static   void   main(String[]args){  
  int   c=10;  
  int[]   w={2,2,6,5,4};  
  int[]   v={6,3,5,4,6};  
  int[][]   m=new   int[w.length][c];  
  knapsack(v,w,c,m);  
  for(int   i=w.length-1;i>=0;i--)  
  for(int   j=0;j<c;j++)  
  System.out.println(m[i][j]+"\n");  
  }  
   
  }  
  Exception   in   thread   "main"   java.lang.ArrayIndexOutOfBoundsException:   10  
  at   com.sohu.question0_1.knapsack(question0_1.java:11)  
  at   com.sohu.question0_1.main(question0_1.java:46)  
   
   
  问题点数:20、回复次数:6Top

1 楼bigelf(好好学习,天天向上)回复于 2006-11-02 23:38:18 得分 0

11 m[n][j]=v[n];  
   
  这里数组下标越界Top

2 楼feier00()回复于 2006-11-04 00:48:52 得分 0

是不是for(int   j=w[n];j<=c;j++)该成for(int   j=w[n];j<c;j++)  
  可是还是有错误  
  Top

3 楼feier00()回复于 2006-11-04 00:49:09 得分 0

Exception   in   thread   "main"   java.lang.ArrayIndexOutOfBoundsException:   10  
  at   com.sohu.question0_1.knapsack(question0_1.java:21)  
  at   com.sohu.question0_1.main(question0_1.java:46)Top

4 楼haisenmai(我应该做得到)回复于 2006-11-04 13:06:24 得分 0

 
  public   class   question0_1   {  
  public   static   int[][]   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;i>1;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-1]=m[2][c-1];  
  if(c>=w[1])  
  m[1][c-1]=Math.max(m[1][c-1],   m[2][c-w[1]]+v[1]);  
  }  
  return   m;  
  }  
   
  /*public   static   void   traceback(int[][]m,int[]w,int   c,int[]x){  
  int   n=w.length-1;  
  for(int   i=1;i<n;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);  
   
  }  
  */  
  public   static   void   main(String[]args){  
  int   c=10;  
  int[]   w={2,2,6,5,4};  
  int[]   v={6,3,5,4,6};  
  int[][]   m=new   int[w.length][c];  
  knapsack(v,w,c,m);  
  for(int   i=w.length-1;i>=0;i--)  
  for(int   j=0;j<c;j++)  
  System.out.println(m[i][j]+"\n");  
  }  
   
  }  
  Top

5 楼asmetoyou()回复于 2006-11-04 16:59:50 得分 0

学习……Top

6 楼njlaoshi()回复于 2006-11-04 17:21:59 得分 0

转让本人学习JAVA系列的培训资料,详细介绍如下,后面有联系方式,需要的请速联系。(一律超低价转让!!!)  
  一、 JAVA基础培训  
  1. 孙鑫Java无难事(共108集)  
  本套光盘由孙鑫老师亲自授课录制。内容涵盖面广,从入门到精通,授课通俗易懂,分析问题独到精辟,学员通过本套光盘的学习,能够快速掌握Java编程语言,成为Java高手。  
  2. 张孝祥Java就业培训(共56集)  
  本套教学光盘深入浅出的理论分析、精练生动的案例讲解、亲切直观的操作界面、恍然大悟的学习收获。张孝祥老师的课程,就不用多说了。  
  3. 翁凯Java语言视频培训(共30集)  
                  本视频教学是由浙江大学著名年轻计算机专家翁恺教授主讲,一共30集,讲得很好,从JAVA的基础讲起,由浅入深,绝对是精品。看本视频讲座最好是有一点c++的底子  
  二、 JAVA进阶培训  
  1. 赛迪网校J2EE软件工程师培训(J2EE基础13集     高级17集     案例7集)  
                本课程包括J2EE的各个主要方面,以及开发环境,设计模式,和经典案例分析等实用内容。通过本课程的学习,学员将具有J2EE开发的扎实理论基础和实际设计经验,可胜任企业级应用的设计和开发等实际工作。本课程共计约40课时。授课教师均是来自主流J2EE厂商并具有J2EE   5年以上开发和咨询经验的技术专家。  
  2. J2EE   Web程序开发(共38集)  
  国内最知名的J2EE讲师刘晓涛讲师执教,课程生动形象并结合典型企业案例深入的分析。从零开始:该课程以零基础为起点,强调基础理论结合实际;以基础理论课程为第一阶段,到常用工具使用及工作应用为提高部分。专业性强:多平台软件开发(Windows/Linux)   ;紧跟先进的技术(极限编程/测试驱动开发);规范化(学习印度软件经验);不仅仅是编程,在教学过程当中渗透设计思想;编程思想的熏陶,打通任督二脉,对编程语言一通百通;软件工程思想的灌输(分析,设计,实现,测试一条龙)。  
  三、 JAVA实战项目培训录像  
  该培训录像是北京尚学堂科技第一个项目(聊天系统)和   第二个项目(坦克大战)的课堂实录,马士兵老师以手把手一行一行代码的形式教大家如何开发一个示例性Chat和一个相当完备的TankWar游戏,详尽透彻的解释了j2se的常用知识,只要按照教程中的操作一步一步完成,你就足以掌握j2se/eclipse到能够进一步学习的水平了,项目实战,不容错过!  
  四、 Oracle   9i   大型视频培训录像(共64集,13.4G)  
  *1Z0-007   Introduction   to   Oracle9i   SQL    
  *1Z0-031   Oracle9i   DBA   Fundamentals   I    
  *1Z0-032   Oracle9i   DBA   Fundamentals   II    
  *1Z0-033   Oracle9i   Performance   Tuning  
          另附全套PPT培训讲稿。  
   
  联系方式:  
  QQ:421130479  
  MSN:njlaoshi@hotmail.com  
  Tel:13512510369(短信佳)  
  E-mail:njlaoshi@hotmail.com  
  Top

相关问题

关键词

得分解答快速导航

  • 帖主:feier00

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo