题目一:
输入为01的二进制序列,对二进制序列进行切割,使得切割后转为10进制的各段加和的最大值最小
如101101111001
其实我就是想知道不同切割方案后各段的和的分布情况究竟是什么样子的
题目二:
2的i次幂+3的j次幂+5的k次幂的最小top15
题目三:
求一集合{1,2,3,4}的所有子集划分情况,总共有15种,分别有单元素{{1,2,3,4}}、双元素{{1}{2,3,4}}{{1,2}{3,4}}等三元素{{1}{23}{4}}{{12}{3}{4}}等及{{1,2,3,4}},这里没有
一一列举出来,但是大体就是这么个意思,以后会了就回来慢慢补充。
补充第一道题目,只是有了些许的思路,但是还存在一些
package TEXT;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Text11 {
//题目:求解10111分段后各段求和所有的可能性
private StringBuffer input;
private ArrayList<Integer> listInts = new ArrayList<Integer>();
/*public Text11(){
readIn();
temp = new int[input.length()];
for(int i=0;i<input.length();i++){
temp[i] = input.charAt(i)-'0';
}
}*/
/*private void readIn(){
Scanner in = new Scanner(System.in);
temp = in.next();
input = new StringBuffer(temp);
}*/
public void compute(int j,List<String> sb,int sum){
//感觉这个listInts中保存的数并不纯净
/* System.out.println("start+sum"+sum);*/
/*System.out.println(sb.size());*/
for(int i=j;i<sb.size();i++){
sb.add(i+1, ",");
sum+=tranStr2(sb.subList(j, i+1));
sb.remove(i+1);
compute(0,sb.subList(i+1, sb.size()),sum);
listInts.add(sum);//这个listInts的添加位置是不是有问题,才导致添加的数据不仅仅是最终结果,还有一些中间结果
sum=0;
/*System.out.println("between+sum"+sum);*/
/*List<String> tem = sb.subList(i+1, sb.size());
System.out.println(tem.size());
for(String s:tem){
System.out.println(s);
}*/
/*System.out.println("next");*/
/*System.out.print(sb.subList(i+1, sb.size()).toString());*/
/*sum = tranStr(sb.toString());*/
/*System.out.println("end+sum"+sum);*/
}
}
public void printList(){
for(Integer ints:listInts){
System.out.println(ints);
}
}
public int tranStr2(List<String> st){
int tempSum=0;
for(int j=0;j<st.size();j++){
tempSum+=Math.pow(2, st.size()-1-j)*(Integer.parseInt(st.get(j)));
}
return tempSum;
}
public static void main(String[] args) {
//listInts虽然可以包含到所有的解,但是包含的解却不够纯净。。需要改善
Text11 text = new Text11();
ArrayList<String>list = new ArrayList<String>();
list.add("1");
list.add("0");
list.add("1");
list.add("0");
list.add("0");
list.add("1");
list.add("1");
text.compute(0, list, 0);
text.printList();
}
}