狂暴石(计蒜客)
1 #include<iostream> 2 #include<stdlib.h> 3 #include<math.h> 4 using namespace std; 5 int a[15][2]; 6 int min_ = 0x3f3f3f3f; 7 void dfs(int n, int index, int suply, int sum) 8 { 9 if(index>1&&index<=n+1) 10 { 11 if(abs(suply-sum)<min_) 12 { 13 min_=abs(suply-sum); 14 } 15 } 16 for(int i=index; i<=n;++i) 17 { 18 if(i==n&&index!=0) 19 { 20 dfs(n,i+1,suply*1,sum); 21 }else if(i<n) 22 { 23 dfs(n,i+1,suply*a[i][0],sum+a[i][1]); 24 } 25 } 26 } 27 int main() 28 { 29 int n; 30 cin>>n; 31 for(int i=0;i<n;++i) 32 { 33 cin>>a[i][0]; 34 cin>>a[i][1]; 35 } 36 dfs(n,0,1,0); 37 cout<<min_; 38 return 0; 39 }