//打印输入的数 public void printInput(){ System.out.print("The Input is : "); for(int i=0;i<num.length;i++) System.out.print(" "+num[i]); System.out.println("\n\n"); }//打印最终结果 public void printResult(){ System.out.println("The Final Result is :"); for(int i=0;i<alen ;i++) System.out.print(" "+finalResult[i]); System.out.println("\n\n"); }//从n个数中取出所有的m个数的组合,并将每个组合的和放入数组finalResult public int getCombination(int n,int m){
if (n<m){ System.out.println("Wrong Parameters: first Param >= Second Param"); return 0; }
System.out.println("get "+ m + " number from "+ n + " number :"); int numOfResult=0;
int result[][]=new int[30][];
int a[]; a=new int[m+1] ; int i,j;
for (i=1;i<=m;i++) a[i]=i;
for (;;) { result[numOfResult] = new int[m]; int h=0;
for (i=1;i<=m;i++) { result[numOfResult][h] = num[ a[i]-1 ]; h++; }
public void parseData(ArrayList bList){ ArrayList tempList = new ArrayList(); ArrayList currList = new ArrayList(); String tempStr = ""; for(int i=0;i<bList.size();i++){ firstNum = (String)bList.get(i); if(aList==null) aList = new ArrayList(); aList.add(firstNum); int loopNum =aList.size(); for(int j=0;j<loopNum;j++){ tempStr = (String)aList.get(j); if(tempStr.indexOf(firstNum)>-1) continue; aList.add(tempStr+"+"+firstNum); } }
}
public void ShowData(){ if(aList==null) return; for(int i=0;i<aList.size();i++){ System.out.println((String)aList.get(i)+"\t"); } }
public static void main(String[] args){ ArrayList list = new ArrayList(); list.add("A"); list.add("B"); list.add("C"); list.add("D"); list.add("E"); list.add("F"); Test test = new Test(); test.parseData(list); test.ShowData(); } } 研究了一把,这个可以支持任意个参数
比如有四个数分别是: A、B、C、D
任意两个想加就是: A+B,A+C,A+D,B+C,C+D,B+C,B+D,C+D,C+D
同理可知接下来的两句话的意思。
但最“再加上这四个数字”一句怎样理解呢?
A,B,C,D, A+B,A+C,A+D,B+C,B+D,C+D,A+B+C,A+B+D,B+C+D,A+B+C+D
这是课后作业么,我认为你最好自己先做一下,能写多少写多少。遇到实在解决不了的问题再上论坛来,把你已经写好的代码贴上来。
不过结果是对的,呵呵 public class GenSumArray
{
int num[];
int alen=0;
int finalResult[] = new int[200];
public GenSumArray(int i,int[] ia){
num=new int[i];
for (int j=0 ;j<i ; j++ ) {
num[j]=ia[j];
}
for(int j=0;j<finalResult.length;j++) finalResult[j]=0;
}
//打印输入的数
public void printInput(){
System.out.print("The Input is : ");
for(int i=0;i<num.length;i++) System.out.print(" "+num[i]);
System.out.println("\n\n");
}//打印最终结果
public void printResult(){
System.out.println("The Final Result is :");
for(int i=0;i<alen ;i++) System.out.print(" "+finalResult[i]);
System.out.println("\n\n");
}//从n个数中取出所有的m个数的组合,并将每个组合的和放入数组finalResult
public int getCombination(int n,int m){
if (n<m){
System.out.println("Wrong Parameters: first Param >= Second Param");
return 0;
}
System.out.println("get "+ m + " number from "+ n + " number :");
int numOfResult=0;
int result[][]=new int[30][];
int a[];
a=new int[m+1] ;
int i,j;
for (i=1;i<=m;i++) a[i]=i;
for (;;)
{
result[numOfResult] = new int[m];
int h=0;
for (i=1;i<=m;i++) {
result[numOfResult][h] = num[ a[i]-1 ];
h++;
}
for (int p=0; p<result[numOfResult].length;p++ ){
System.out.print(" "+result[numOfResult][p]);
finalResult[alen] = finalResult[alen]+ result[numOfResult][p];
}
System.out.println(" sum is: "+finalResult[alen]);
numOfResult++;
alen++;
for (j=m;j>=1;j--) if (a[j]<n-m+j) break;
if (j==0) break;
a[j]++;
for (i=j+1;i<=m;i++) a[i]=a[i-1]+1;
}
System.out.println( numOfResult+" result!\n\n");
return numOfResult;
}
public static void main(String args[])
{
int ia[]={1,2,3,4};//这里修改数字
GenSumArray gsm=new GenSumArray(4,ia);
gsm.printInput();
gsm.getCombination(4,1);
gsm.getCombination(4,2);
gsm.getCombination(4,3);
gsm.getCombination(4,4);
gsm.printResult();
}
}
public class addfour {
private static Vector v = new Vector();
private static int count = 0;
private static double[] a = { 1, 10, 100, 1000, 10000}; //在这里定义任意长度的数组
private static double[] b = new double[(int) (Math.round(Math.pow(2.0,
a.length))) - 1];
public static void main(String[] args) {
int n = a.length;
for (int p = 1; p <= n; p++) {
//求p个的集合
find(0, n - p, p);
}
}
private static void find(int ns, int ne, int step) {
if (step == 0) {
show();
v.remove(v.size() - 1);
return;
}
for (int i = ns; i <= ne; i++) {
v.add(new Integer(i));
find(i + 1, ne + 1, step - 1);
}
if (v.size() > 0)
v.remove(v.size() - 1);
} private static void show() {
double tot = 0;
String ret = "";
for (int k = 0; k < v.size(); k++) {
int m = ((Integer) v.get(k)).intValue();
tot += a[m];
ret += "a[" + m + "]";
if (k != v.size() - 1)
ret += "+";
}
b[count] = tot;
System.out.println("b[" + count + "]=" + ret + " = " + tot);
count++;
}
}
import java.util.ArrayList;public class Test{
private ArrayList aList = null;
private String firstNum ="";
private String secondNum ="";
private String addResuld ="";
public void parseData(ArrayList bList){
ArrayList tempList = new ArrayList();
ArrayList currList = new ArrayList();
String tempStr = "";
for(int i=0;i<bList.size();i++){
firstNum = (String)bList.get(i);
if(aList==null) aList = new ArrayList();
aList.add(firstNum);
int loopNum =aList.size();
for(int j=0;j<loopNum;j++){
tempStr = (String)aList.get(j);
if(tempStr.indexOf(firstNum)>-1) continue;
aList.add(tempStr+"+"+firstNum);
}
}
}
public void ShowData(){
if(aList==null) return;
for(int i=0;i<aList.size();i++){
System.out.println((String)aList.get(i)+"\t");
}
}
public static void main(String[] args){
ArrayList list = new ArrayList();
list.add("A");
list.add("B");
list.add("C");
list.add("D");
list.add("E");
list.add("F");
Test test = new Test();
test.parseData(list);
test.ShowData();
}
}
研究了一把,这个可以支持任意个参数
a b c dresult = ( a+b ) + ( a+c ) + ( a+d ) + ( b+c ) + ( b+d ) + ( c+d ) + ( a+b+c ) + ( a+b+d ) + ( a+c+d ) + ( b+c+d ) + (a+b+c+d)我的理解对吗?
{System.out.println(i+"data add");
switch counter
case 1;
{for() break;}
case 2;
{for() break;}case 3;
{for() break;}
...
return sum;