• poj 1129 Channel Allocation


    http://poj.org/problem?id=1129

     1 import java.util.*;
     2 import java.math.*;
     3 public class Main {
     4     public static boolean flag=false;
     5     public static int ans=0;
     6     public static void main(String []args)
     7     {
     8         Scanner cin=new Scanner(System.in);
     9         int n;
    10         String str;
    11         while(cin.hasNext())
    12         {
    13             ans=1;
    14             int [][]g=new int[100][100];
    15             int []hash=new int[100];
    16              n=cin.nextInt();
    17              if(n==0) break;
    18              for(int i=0; i<n; i++)
    19              {
    20                  str=cin.next();
    21                  for(int j=2; j<(int)str.length(); j++)
    22                  {
    23                      g[str.charAt(0)-'A'][str.charAt(j)-'A']=1;
    24                  }
    25              }
    26              flag=false;
    27              dfs(0,1,g,n,hash);
    28              if(ans==1)
    29              {
    30              System.out.println("1 channel needed.");
    31              }
    32              else
    33              {
    34                  System.out.println(ans+" channels needed.");
    35              }
    36         }
    37     }
    38     public static int deal(int id,int co,int n,int g[][],int hash[])
    39     {
    40         for(int i=0; i<n; i++)
    41         {
    42             if(g[id][i]==1&&co==hash[i])
    43             {
    44                 return 0;
    45             }
    46         }
    47         return 1;
    48     }
    49     public static void dfs(int num,int m1,int g[][],int n,int hash[])
    50     {
    51         if(flag) return;
    52         if(num>=n)
    53         {
    54             flag=true;
    55             return;
    56         }
    57         for(int i=1; i<=m1; i++)
    58         {
    59             if(deal(num,i,n,g,hash)==1)
    60             {
    61                 hash[num]=i;
    62                 dfs(num+1,m1,g,n,hash);
    63                 hash[num]=0;
    64             }
    65         }
    66         if(flag==false)
    67         {
    68             ans++;
    69             dfs(num,m1+1,g,n,hash);
    70         }
    71     }
    72 }
    View Code
  • 相关阅读:
    python 调用dll 动态链接库 结构体参数及回调函数等示例
    逆向x64-small-trick
    Malloc碎碎念
    关于OF和CF
    月赛-Crackhash
    ARM64调试环境
    Apache Kafka(六)- High Throughput Producer
    Apache Kafka(五)- Safe Kafka Producer
    Apache Kafka(四)- 使用 Java 访问 Kafka
    Apache Kafka(三)- Kakfa CLI 使用
  • 原文地址:https://www.cnblogs.com/fanminghui/p/3832395.html
Copyright © 2020-2023  润新知