就是说不到20堆石头。分成2大堆。。让他们绝对值最小。。
直接dfs。。第一次用java写这种题。。感觉还不错。。
实际上java跟C++也差不了多少啊。。
还有就是我用java在pku上虐了七八道高精度的题目。。真是爽!
import java.util.*;
class solve
{
static Scanner in=new Scanner(System.in);
int[] W;
int n,allSum,ans;
void work()
{
init();
dfs(0,0);
System.out.println(ans);
}
void init()
{
n=in.nextInt();
W=new int[n];
allSum=0;
for(int i=0;i<n;i++)
{
W[i]=in.nextInt();
allSum+=W[i];
}
ans=allSum;
}
void checkans(int newAns)
{
newAns=newAns<0?-newAns:newAns;
if(newAns<ans) ans=newAns;
}
void dfs(int pos,int sum)
{
if(pos==n) {checkans(allSum-2*sum);return;}
dfs(pos+1,sum+W[pos]);
dfs(pos+1,sum);
}
}
public class Main
{
public static void main(String[] args)
{
solve now=new solve();
now.work();
}
}