等和的分隔子集【计蒜客】
2018-02-26 22:41
211 查看
解题地址: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。
晓萌希望将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 [a-1]%2==0) System.out.println(array [a-1]/2); else System.out.println(0); } }
相关文章推荐
- 计蒜客--第28题:等和的分隔子集
- 计蒜客 难题题库 028 等和的分隔子集
- 计蒜客-等和的分隔子集
- 等和的分隔子集
- 等和的分隔子集
- 计蒜客————等和的分隔子集
- 计蒜客刷题之旅 之 等和的分隔子集
- 计蒜客 等和的分隔子集 (dp)
- 计蒜客 等和的分隔子集 DP
- 计蒜客等和的分隔子集
- 【dfs或者dp】等和的分隔子集
- 位运算二进制枚举子集 李白喝酒
- 二进制枚举子集
- 集合的所有子集
- Python3 计算A+B+C,输入为一行,包括了用空格分隔的三个整数 A,B,C
- LeetCode 全排列、子集、组合总数
- 子集求解问题
- 计蒜客 元素移除问题
- awk的学习笔记分隔符 -F "[, ]"
- PHP 将逗号、空格、回车分隔的字符串转换为数组的函数