計蒜客--第28題:等和的分隔子集
阿新 • • 發佈:2019-01-01
第28題:等和的分隔子集
時間限制 1000 ms 記憶體限制 10000 K
曉萌希望將1到N的連續整陣列成的集合劃分成兩個子集合,且保證每個集合的數字和是相等。例如,對於N=3,對應的集合{1,2,3}能被劃分成{3} 和 {1,2}兩個子集合.
這兩個子集合中元素分別的和是相等的。
對於N=3,我們只有一種劃分方法,而對於N=7時,我們將有4種劃分的方案。
輸入包括一行,僅一個整數,表示N的值(1≤N≤39)。
輸出包括一行,僅一個整數,曉萌可以劃分對應N的集合的方案的個數。當沒發劃分時,輸出0。
樣例輸入
7
樣例輸出
4
import java.util.Scanner;
public class Main {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scan = new Scanner(System.in);
int n = scan.nextInt();
int sum = n * (n + 1);
if (sum % 4 != 0) {
System.out.println(0 );
} else {
sum /= 4;
int i, j;
long[] a = new long[1000];
a[0] = 1;
for (i = 1; i <= n; i++) {
for (j = sum; j >= i; j--) {
a[j] += a[j - i];
}
}
System.out.println(a[sum] / 2 );
}
}
}