读书人

哪位帮小弟我看看这个组合有关问题代码

发布时间: 2013-03-26 09:54:34 作者: rapoo

哪位帮我看看这个组合问题代码哪里错了
debug时 data为-45,请教下各位...

import java.util.Arrays;

/*
* 从一个集合里选出几个数,使他们的和等于给定的数
* 方法:回溯法
*/
public class SelectNumQuestion {
public static int num[] ={ 4,2,8,7,9,6,3,5,1 } ;
public static int sum = 13 ;
public static int data = 0 ;
public static int is_not[] ={0,0,0,0,0,0,0,0,0} ;
/*先把集合里的数进行排序
* 然后按照二叉树的模式(0,1),利用回溯法求出所有可能的解
*/
public static void back(int[] num,int len,int i){
if(data==sum){
for(int j = 0;j<len;++j){
if(is_not[j]==1){//选中
System.out.print(num[j]) ;
}
}
System.out.println() ;
}else if(data+num[i]<=sum){
for(int flag=0;flag<=1;++flag){
if(flag==1){
data += num[i] ;
is_not[i] = 1;
}else{
data -= num[i] ;
is_not[i] = 0 ;
}
back(num,len,i+1) ;
}
}
}
public static void main(String[] args) {
Arrays.sort(num) ;
back(num,9,0);
}

}

[解决办法]
你的这个思想有点难理解,给你个链接看看 ,会有启发的http://bbs.csdn.net/topics/390370036

读书人网 >J2SE开发

热点推荐