nyoj+搜索dfs+每次是对一个数加与不加进行递归

来源:互联网 发布:国外在淘宝买东西 编辑:程序博客网 时间:2024/06/05 03:23
点击打开链接
#include<iostream>#include<stdio.h>#include<cstdio>#include<math.h>#include<string>#include<cstring>#include<string.h>#include<algorithm>#include<vector>using namespace std;int SumAll=0,def=0x3f3f3f3f, N=0,Arr[25]={0};void dfs(int sum,int i){    if(i>=N) return;    int temp=abs(SumAll-2*sum);    if(def>temp) def=temp;    //精髓就在于这里每次选择加或不加,构成二叉树搜索,进行所有情况搜索    dfs(sum+Arr[i],i+1);    dfs(sum,i+1);}int main(){    while(cin>>N)    {        memset(Arr,0,sizeof(Arr));        SumAll=0;        def=0x3f3f3f3f;        for(int i=0;i<N;i++)        {            cin>>Arr[i];            SumAll+=Arr[i];        }        dfs(0,0);        cout<<def<<endl;    }    return 0;}

0 0
原创粉丝点击