等和的分隔子集【計蒜客】
阿新 • • 發佈:2019-01-02
解題地址:http://www.cnblogs.com/kangjianwei101/p/5332451.html
曉萌希望將1到N的連續整陣列成的集合劃分成兩個子集合,且保證每個集合的數字和是相等。例如,對於N=3,對應的集合{1,2,3}能被劃分成{3} 和 {1,2}兩個子集合.
這兩個子集合中元素分別的和是相等的。
對於N=3,我們只有一種劃分方法,而對於N=7時,我們將有4種劃分的方案。
輸入包括一行,僅一個整數,表示N的值(1≤N≤39)。
輸出包括一行,僅一個整數,曉萌可以劃分對應N的集合的方案的個數。當沒發劃分時,輸出0。
import java.util.Scanner; public class Main { public static void main(String[] args) { Main test=new Main(); test.start(); } public void start(){ //首先確定分為兩個相等的子集 Scanner scan=new Scanner(System.in); int n=scan.nextInt(); double sum=(double)(n*(n+1))/4; if(sum!=(int)sum){ System.out.println(0); return; } int a=(int)(sum+1); long array[][]=new long[n+1][a]; array[0][0]=1; for(int i=1;i<array.length;i++){ for(int j=0;j<array[0].length;j++){ if(i>j){ array[i][j]=array[i-1][j]; }else{ if(i<=j){ array[i][j]=array[i-1][j]+array[i-1][j-i]; } } } } if(array[n][a-1]%2==0) System.out.println(array[n][a-1]/2); else System.out.println(0); } }