p1177 搜索简单题

Posted 邱宇

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了p1177 搜索简单题相关的知识,希望对你有一定的参考价值。

  真的是挺简单的,按照要求直接搜。虽然我不知道到底是横行表示工作还是竖列,但是搜起来还是一样的。

  

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<algorithm>
 4 #include<cstring>
 5 #include<cmath>
 6 using namespace std;
 7 int i,f,n,o[30][30],ans=200000;
 8 bool flag[30];
 9 void dfs(int sum,int now)
10 {
11     if(sum>=ans) return ;
12     if(now==n)
13     {
14         ans=sum;
15         return ;
16     }
17     now++;
18     for(int j=1;j<=n;j++)
19     {
20         if(flag[j]==0)
21         {
22             flag[j]=1;
23             dfs(sum+o[j][now],now);
24             flag[j]=0;
25         }
26     }
27     return;
28 }
29 int main()
30 {
31 ios::sync_with_stdio(false);    
32     cin>>n;
33     for(i=1;i<=n;i++)
34         for(f=1;f<=n;f++)
35             cin>>o[i][f];
36     for(i=1;i<=n;i++)
37     {
38         flag[i]=1;
39         dfs(o[i][1],1);
40         flag[i]=0;
41     }
42     cout<<ans;
43 }
p1177

  然后之所以迟迟不行的原因其实是我习惯把循环变量弄成全局的。而在这道题中,dfs内部的变量是不能被自己的下层变来变去的。然后就只能过一些个特殊情况。

  还有一个小小的害怕:如果出题人给了个所有工作时间都一样的数据岂不是要爆炸,即使优化if(sum>=ans)return ;后复杂度还是n的n次方,简直了。

 

以上是关于p1177 搜索简单题的主要内容,如果未能解决你的问题,请参考以下文章

洛谷——P1177 模板快速排序

P1177 模板快速排序

洛谷P1177快速排序

P1177排序题解

题解 P1177 模板快速排序

P1177 模板快速排序