P2036PERKET
一.题目描述:
二.解题思路:
从第1层开始dfs,如果层数已经超过n了则返回,否则每次比较一下当前的苦度和酸度的绝对值,需要注意的是,该层有选择和不选两种情况,所以要进行两条递归。如果比答案小则更新。
三.代码实现:
1 #include "bits/stdc++.h" 2 using namespace std; 3 int s1[11],s2[11]; 4 int m = INT_MAX; 5 int n; 6 void dfs(int suma,int sumb,int f) 7 { 8 if(f > n) return; 9 if(suma != 1 && sumb != 0) 10 if(fabs(suma - sumb) < m) m = fabs(suma - sumb); 11 dfs(suma * s1[f],sumb + s2[f],f + 1); 12 dfs(suma,sumb,f + 1); 13 } 14 int main() 15 { 16 cin >> n; 17 for(int i = 0;i < n;i++) 18 cin >> s1[i] >> s2[i]; 19 dfs(1,0,0); 20 cout << m << endl; 21 return 0; 22 }
本文来自博客园,作者:{scanner},转载请注明原文链接:{https://home.cnblogs.com/u/scannerkk/}