为荣誉而拼搏少年 2024-03-24 21:55 采纳率: 50%
浏览 10
已结题

1571.游戏(game)

题目描述
Introl在玩一种特殊的游戏—凑顺子。

他现在有 n 张牌,每张牌的点数为 a
i

,他希望凑出尽可能多的顺子。

在该游戏中,顺子的定义为:点数大小连续的 m 张牌(m>1),不能中断,不能重复。

例如 [1,2,3,4,5,6,7,] 是一个顺子,而 [1,2,4,5,6,7,8,9] 和 [1,2,2,3,4,5,6,7,8,9] 不是一个顺子。

需要注意的是,顺子不可以拆分,例如 [1,2,3,4,5,6,7,8,9] 不可以拆分成 [1,2,3,4]、[5,6,7,8,9] 两个顺子。

换句话说,先凑最长的顺子,剩下的牌再凑最长的顺子,以此类推,直到不能凑顺子为止,顺子长度最短为 2。

输入
从文件 game.in 中读入数据。

第一行输入一个正整数 N ,表示牌的个数。

第二行输入 N 个数,表示每张牌的点数 a
i

输出
输出到文件 game.out 中。

输出顺子的个数。

样例数据
输入 #1 复制
13
2 1 2 3 5 4 4 3 5 8 7 6 9
输出 #1 复制
2

数据范围限制
对于30% 的数据,1≤N≤10。

对于100% 的数据,1≤N≤1000,1≤a
i

≤100。

  • 写回答

5条回答 默认 最新

  • 2024李荣清 2024-03-31 21:10
    关注
    
    
    ```c++
    #include<bits/stdc++.h>
    using namespace std;
    int a[1000001],s[1000001];
    int main()
    {
        int n;
        freopen("game.in","r",stdin);
        freopen("game.out","w",stdout);
        cin>>n;
        for(int i=1;i<=n;i++)
        {
            cin>>a[i];
            s[a[i]]++;
        }
        int ans=0;
        bool q=1;
        while(1)
        {
            for(int i=1;i<=100;i++)
            {
                if(s[i]!=0)
                {
                    for(int j=i+1;;j++)
                    {
                        if(s[j]==0)
                        {
                            if(j!=i+1)
                            {
                                ans++;
                                s[i]--;
                            }
                            break;
                        }
                        else
                        s[j]--;
                    }
                }
            }
            q=0;
            for(int i=1;i<=100;i++)
            {
                if(s[i]!=0&&s[i+1]!=0)
                q=1;
            }
            if(!q)
            break;
        }
        cout<<ans;
    }
    
    

    ```

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 4月21日
  • 已采纳回答 4月21日
  • 修改了问题 3月24日
  • 修改了问题 3月24日
  • 展开全部

悬赏问题

  • ¥15 哪个tomcat中startup一直一闪而过 找不出问题
  • ¥15 这个怎么改成直流激励源给加热电阻提供5a电流呀
  • ¥50 求解vmware的网络模式问题 别拿AI回答
  • ¥24 EFS加密后,在同一台电脑解密出错,证书界面找不到对应指纹的证书,未备份证书,求在原电脑解密的方法,可行即采纳
  • ¥15 springboot 3.0 实现Security 6.x版本集成
  • ¥15 PHP-8.1 镜像无法用dockerfile里的CMD命令启动 只能进入容器启动,如何解决?(操作系统-ubuntu)
  • ¥30 请帮我解决一下下面六个代码
  • ¥15 关于资源监视工具的e-care有知道的嘛
  • ¥35 MIMO天线稀疏阵列排布问题
  • ¥60 用visual studio编写程序,利用间接平差求解水准网