public class FindContinuousSequence { public static void main(String[] args) { int target = 28; for (int[] arrs:findContinuousSequence(target)) { for (int arr:arrs) { System.out.print(arr); } System.out.println(); } test(); }
public static int[][] findContinuousSequence(int target){ ArrayList<int[]> list = new ArrayList(); for (int i = 1; i < target/2+2; i++) { int target2 = target; boolean flag = false; //连续序列的开始为i int end = 0;//连续序列的结束 for (int j = i; j < target/2+2; j++) { target2 -= j; if (target2 < 0 ){//不是连续序列 break; } if (target2 == 0 ){//是连续序列 end = j; flag = true; } } if (flag){ int[] a = new int[end - i+1]; int b = 0; for (int j = i; j < end+1; j++) { a[b] = b+i; b++; } list.add(a);//不知道二维数组长度,先放在list中 } } //从list取出数据转移到要求的二维数组中 int[][] aa = new int[list.size()][]; for (int i = 0; i < list.size(); i++) { aa[i] = list.get(i); //System.out.println(Arrays.toString((int[])list.get(i))); } return aa; }
public static void test(){ int target = 15; for (int i = 1; i < target/2 + 1; i++) { //i为连续序列开头 int b = 0;//连续序列结尾 boolean flag = false; for (int j = i + 1; j < target/2 + 2; j++) { if ((i+j)*(j-i+1)/2 == target){ b = j; flag = true; } } if (flag){ System.out.println(i+"-"+b); } } } }