using System.Collections.Generic;
public static bool CanBePartitioned(int [] array){
foreach(int num in array){
Dictionary<string,bool>memo = new Dictionary<string,bool>();
return can_be_partitioned(sum,array,0,ref memo);
public static bool can_be_partitioned(int sum,int[]array,int idx, ref Dictionary<string,bool> memo){
if(sum<0||idx==array.Length)
string key=num.ToString()+","+sum.ToString();
if(memo.ContainsKey(key))
bool result= can_be_partitioned(sum-num,array,idx+1,ref memo)||can_be_partitioned(sum,array,idx+1,ref memo);
public static void Main()
Console.WriteLine(CanBePartitioned(new int[]{15, 5, 20, 10, 35, 15, 10}));