zoukankan      html  css  js  c++  java
  • poj 2239 二分图最大匹配,基础题(待补)

    1、poj 2239   Selecting Courses   二分图最大匹配问题

    2、总结:看到一个题解,直接用三维数组做的,很巧妙,很暴力。。

    题意:N种课,给出时间,每种课在星期几的第几节课上,求最多可上几种课。

    #include<iostream>
    #include<cstring>
    #include<cstdio>
    using namespace std;
    
    int mapn[310][10][15];
    int visit[10][15],pipei[10][15];
    
    int findn(int n)
    {
        for(int i=1;i<=7;i++){
            for(int j=1;j<=12;j++){
                if(!visit[i][j]&&mapn[n][i][j]){    //这个时间点[i][j]要能够和n匹配
                    visit[i][j]=1;
    
                    if(!pipei[i][j]||findn(pipei[i][j])){ //如果这个时间点没有和其它课匹配,或者已经匹配了但其它课可以换其它时间点。也就是不冲突
                        pipei[i][j]=n;
                        return 1;
                    }
                }
            }
        }
        return 0;
    }
    
    int main()
    {
        int n,t,p,q;
        while(scanf("%d",&n)!=EOF)
        {
            memset(mapn,0,sizeof(mapn));
            for(int i=1;i<=n;i++){
                scanf("%d",&t);
                while(t--){
                    scanf("%d%d",&p,&q);
                    mapn[i][p][q]=1;
                }
            }
    
            memset(pipei,0,sizeof(pipei));
            int sum=0;
            for(int i=1;i<=n;i++){
                memset(visit,0,sizeof(visit));
                if(findn(i)){   //查找每种课是否都能匹配不冲突的上课时间
                    sum++;
                }
            }
            printf("%d
    ",sum);
        }
    
        return 0;
    }
    View Code
  • 相关阅读:
    抽象类使用细节
    super关键字
    JDK,JRE,JVM三者之间的爱恨情仇
    LinkedHashSet
    HashSet扩容成红黑树机制
    Set之HashSet
    finally关键字
    Hashcode方法
    equals方法和==的区别
    LinkedList
  • 原文地址:https://www.cnblogs.com/sbfhy/p/5809694.html
Copyright © 2011-2022 走看看