zoukankan      html  css  js  c++  java
  • ural 1208 Legendary Teams Contest

    题意描述:给定K支队伍,每队三个队员,不同队伍之间队员可能部分重复,输出这些队员同时能够组成多少完整的队伍;

        DFS,利用DFS深度优先搜索,如果该队所有队员都没有被访问过,那么将该队计入结果,再去选择下一队~

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cstring>
     4 #include <algorithm>
     5 #include <stdlib.h>
     6 #include <map>
     7 using namespace std;
     8 
     9 struct team{
    10     int a,b,c;
    11 }; 
    12 
    13 team dif[20];
    14 int n,result;
    15 int visit[60];
    16 map<string,int>q;
    17 
    18 void dfs(int x,int y){
    19     result = max(result,x);
    20     if(y>n) 
    21     return ;
    22     
    23     //如果 dif[y]队的成员都没被访问过  ,那么就可以计入结果,result++; 
    24     //否则就 继续搜索下一队。 
    25     if(!visit[dif[y].a]&&!visit[dif[y].b]&&!visit[dif[y].c]){
    26         visit[dif[y].a] = visit[dif[y].b] = visit[dif[y].c]=1;
    27         dfs(x+1,y+1);
    28         visit[dif[y].a] = visit[dif[y].b] = visit[dif[y].c]=0;
    29     }
    30     else{
    31         dfs(x,y+1);    
    32     }
    33 }
    34 
    35 int main(){
    36     int temp=0;
    37     string str1,str2,str3;
    38     cin>>n;
    39     for(int i=1;i<=n;i++){
    40         cin>>str1>>str2>>str3;   //利用 map  直接将重复元素滤去 
    41         
    42         if(!q[str1]){   //选择不重复的 string,匹配 int后, 作为q的新元素 
    43             temp++;
    44             q[str1] = temp;
    45         }
    46         if(!q[str2]){
    47             temp++;
    48             q[str2] = temp;
    49         }
    50         if(!q[str3]){
    51             temp++;
    52             q[str3] = temp;
    53         }
    54         dif[i].a = q[str1];
    55         dif[i].b = q[str2];
    56         dif[i].c = q[str3];
    57     }  
    58     //如此就将人名映射成不同的数字  ,然后在 visit[]中计入是否已经访问过。 
    59     
    60     for(int i=1;i<= n;i++){
    61         visit[dif[i].a] = visit[dif[i].b] = visit[dif[i].c] = 1;
    62         dfs(1,i+1);
    63         visit[dif[i].a] = visit[dif[i].b] = visit[dif[i].c] = 0;
    64     }
    65     cout<<result<<endl;
    66     return 0;
    67 }
  • 相关阅读:
    易语言软件加VMProtect壳的正确方法
    ghost系统到硬盘完后,重启进入winxp安装的画面变成了蓝屏
    万象客户端设置服务端ip保存在注册表的位置
    php乱码解决
    远程桌面Default.rdp 中各个参数的含义
    关闭自动检测磁盘
    关于collapsed margin(外边距合并)
    position定位
    grunt-replace和grunt-include-replace问题
    关于动态生成dom绑定事件失效的原因
  • 原文地址:https://www.cnblogs.com/liugl7/p/4771643.html
Copyright © 2011-2022 走看看