贝壳扑克牌题解

#include<bits/stdc++.h>
using namespace std ;

int no_straight( vector<int> nums , int residue )
{
    sort( nums.begin() , nums.end() ) ;
    int i  ;
    for( i = nums.size() - 1 ; i >= 0 && residue > 0 ; i-- )
        {
            residue -= nums[i] ;
            if( nums[i] == 4 ) residue -= 2 ;
            if( nums[i] == 3 ) residue -= 1 ;
        }
    return nums.size() - 1 - i ;
}

int dfs( int first , int residue ,vector<int> nums )
{
    int res = no_straight( nums , residue ) ;
    for( int i = first ; i < nums.size() ; i++ )
    {
        vector<int> nums_cur ;
        nums_cur = nums ;
        for( int j = 1 ; i+j-1 < nums.size() ; j++ )
        {
            nums_cur[i+j-1]-- ;
            if( nums_cur[i+j-1] < 0 )
                break ;
            if( j < 5 )
                continue ;
            int x = dfs( i , residue - j , nums_cur ) ;
            res = min( res , 1+x ) ;
        }
    }
    return res ;
}


int main()
{
    vector< int > nums(13,0) ;
    string s = "8K67A65K27T59K346AK2" ;
    for( int i = 0 ; i < 20 ; i++ )
        {
            char x ;
            x = s[i];
            int y ;
            if( '2'<=x && x<='9' )
                y = x-'0'-1 ;
            else if( x == 'A' )
                y = 0 ;
            else if( x == 'T' )
                y = 9 ;
            else if( x == 'J' )
                y = 10 ;
            else if( x == 'Q' )
                y = 11 ;
            else if( x == 'K' )
                y = 12 ;
            nums[y]++ ;
        }
    int res = dfs( 0 , 20 ,  nums ) ;
    cout << res ;
    return 0 ;
}

#贝壳找房##题解#
全部评论
原题:洛谷P2668
点赞 回复 分享
发布于 2018-08-19 10:56
问一下,这东西和图有什么关系啊。。。
点赞 回复 分享
发布于 2018-08-19 07:55
AC了吗
点赞 回复 分享
发布于 2018-08-19 01:01

相关推荐

不愿透露姓名的神秘牛友
05-29 20:12
点赞 评论 收藏
分享
机械打工仔:我来告诉你原因,是因为sobb有在线简历,有些HR为了快会直接先看在线简历,初步感觉不合适就不会找你要详细的了
投了多少份简历才上岸
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务