题解 | #素数伴侣#go#acm

素数伴侣

http://www.nowcoder.com/practice/b9eae162e02f4f928eac37d7699b352e

package main

import(
 "fmt"
 "io"     
) 

func isPrime(num int) bool {
    
    if num == 1 {
        return false
    }
    
    for i := 2; i*i <= num; i++{
        if num%i == 0 {
            return false
        }
    }
    return true
}


func match(odd int, evens []int, visited map[int]int, suited map[int]int) bool {
    for _, even := range evens{
        if isPrime(odd + even) && visited[even] == 0 {
            visited[even] = 1
            if suited[even] == 0 || match(suited[even], evens, visited, suited) {
                suited[even] = odd
                return true
            }
        }
    }
    return false
}


func main(){
    for{
        var n int
        var num int
        var odds []int
        var evens []int
        
        c, err := fmt.Scanf("%d\n", &n)
        if c==0 || err==io.EOF{
            break
        }
        
        //分奇数和偶数
        for i:=0; i<n; i++{
            fmt.Scanf("%d", &num)
            if num % 2 == 0{
                evens = append(evens, num)
            }else{
                odds = append(odds, num)
            }
        }
        
        var suited map[int]int = make(map[int]int)
        var res int
        for i:=0; i<len(odds); i++{
            
            var visited map[int]int = make(map[int]int)
            
            ok := match(odds[i], evens, visited, suited)
            if ok {
                res++
            }
        }
        
        fmt.Println(res)
    }
}


全部评论

相关推荐

逆流河上万仙退:我觉得佬没必要 学历在这里 去了也不会对履历有很大提升 只是有可能让自己更熟练 是我的话会更倾向于找暑期或者中大厂日常
查看13道真题和解析
点赞 评论 收藏
分享
03-21 08:46
已编辑
门头沟学院 C++
一个什么都不会的学生:当你有硕士学历的时候HR会说就是比本科生强
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务