P2036 [COCI20082009#2] PERKET

数据范围10,巨小,直接dfs枚举。
指数型枚举,注意至少要选一个物品。

const int N=15;
PII a[N];
int ans=INF;
int n;

void dfs(int u,int muls,int sumb)
{
    if(u == n)
    {
        if(muls == 1 && sumb == 0) return;
        ans=min(ans,abs(muls-sumb));
        return;
    }

    dfs(u+1,muls*a[u].fi,sumb+a[u].se);
    dfs(u+1,muls,sumb);

}

int main()
{
    cin>>n;

    for(int i=0;i<n;i++) cin>>a[i].fi>>a[i].se;

    dfs(0,1,0);

    cout<<ans<<endl;

    //system("pause");
}
原文地址:https://www.cnblogs.com/fxh0707/p/13687038.html