[COCI2008-2009#2] PERKET

题目链接 https://www.luogu.com.cn/problem/P2036

是一道简单的bfs,没有什么可说的叭

一开始想用暴力,然后发现不会(Um......

数据范围也小,反正bfs不会超时嘛

放AC代码

 1 #include<bits/stdc++.h>//令人快乐的万能头欸
 2 using namespace std;
 3 long long int s[12],t[12],f[12];//s酸度,t苦度,f记录是否会被查找
 4 long long int a=1,b=0,ans=9999999999,n;//ans记录最小值
 5 int dfs(int x)
 6 {
 7     if(x>n)//大于n种不做操作
 8     {}
 9     else
10     {
11         for(int i=1;i<=n;i++)
12         {
13             if(f[i]==0)//如果第i个没有被查找过
14             {
15                 a*=s[i];
16                 b+=t[i];
17                 ans=min(ans,abs(a-b));
18                 f[i]=1;//记录第i个被查找过
19                 dfs(x+1);
20                 f[i]=0;//取消记录
21                 a/=s[i];//恢复初始状态(回溯)
22                 b-=t[i];
23             }
24         }
25     }
26 }
27 int main()
28 {
29     ios::sync_with_stdio(false);
30     cin>>n;
31     for(int i=1;i<=n;i++)
32         cin>>s[i]>>t[i];
33     dfs(1);
34     cout<<ans;
35 }

 

posted @ 2022-03-20 21:20  爱吃虾滑  阅读(84)  评论(0编辑  收藏  举报