首页 > 其他分享 >蓝桥杯 易错题 赢球票

蓝桥杯 易错题 赢球票

时间:2023-01-28 17:35:32浏览次数:49  
标签:球票 卡片 idx int 蓝桥 错题 nownum 数字

题目描述

某机构举办球票大奖赛。获奖选手有机会赢得若干张球票。

主持人拿出 N 张卡片(上面写着 1⋯⋯N 的数字),打乱顺序,排成一个圆圈。

你可以从任意一张卡片开始顺时针数数: 1,2,3 ⋯⋯

如果数到的数字刚好和卡片上的数字相同,则把该卡片收入囊中,从下一个卡片重新数数。

直到再无法收获任何卡片,游戏结束。囊中卡片数字的和就是赢得球票的张数。

比如:

卡片排列是:1 2 3

我们从 1 号卡开始数,就把 1 号卡拿走。再从 2 号卡开始,但数的数字无法与卡片对上,很快数字越来越大,不可能再拿走卡片了。因此这次我们只赢得了 1 张球票。

还不算太坏!如果我们开始就傻傻地从 2 或 3 号卡片数起,那就一张卡片都拿不到了。

如果运气好,卡片排列是 2 1 3,那我们可以顺利拿到所有的卡片!

本题的目标:已知顺时针卡片序列,随便你从哪里开始数,求最多能赢多少张球票(就是收入囊中的卡片数字之和)

输入描述

第一行一个整数 �N (�≤100N≤100),表示卡片数目。

第二行 �N 个整数,表示顺时针排列的卡片。

输出描述

输出一行,一个整数,表示最好情况下能赢得多少张球票。

输入输出样例

示例

输入 

3

1 2 3

输出

1

代码如下

#include <iostream>
#include <string>
const int maxn=110;
int n;
int a[maxn];
int b[maxn];
using namespace std;
int get_check( int idx )
{
    for(int i = 0 ; i < n ; i++)
        b[i]=a[i];
        int nownum = 1;//当前检查的数字 
        int cnt = 0;//检查了多少数字 
        int sum = 0;//当前的牌数和
        while (true)
        {
            
            if(nownum == b[idx])
            {
                sum += b[idx];
                b[idx]=0; 
                nownum=0;//数到合适数字拿出,重新开始数
                cnt++;
                if(cnt == n)//如果全部数完 结束循环 
                return sum; 
            }
            nownum++;
            idx=(idx + 1 )% n;//顺时针循环,用数学方式实现,少写一点bug
            if( nownum > n) //如果nownum大于n的情况时,再也无法取到数字了,结束循环 
            return sum; 
            while(b[idx] == 0) 
            {
                idx=(idx + 1) % n;//取出数字的位置跳过去
            }
            
        } 
}

int main()
{
    cin>>n;
    for(int i = 0 ; i < n ; i++)
        cin>>a[i];
    int ans = 0;
    for(int i = 0 ; i < n ; i++)
    {
        int x = get_check(i);
        if(x > ans)
        ans = x;
        
    }
    cout<<ans<<endl;
    return 0;
}

 

标签:球票,卡片,idx,int,蓝桥,错题,nownum,数字
From: https://www.cnblogs.com/jszs0013/p/17070928.html

相关文章

  • 蓝桥杯 统计子矩阵
    题目描述给定一个N×M的矩阵A,请你统计有多少个子矩阵(最小1×1,最大N×M)满足子矩阵中所有数的和不超过给定的整数K? 输入格式第一行包含三个整......
  • 蓝桥杯 易错题 特殊时间 c++
    问题描述2022年2月22日22:20是一个很有意义的时间,年份为2022,由3个2和1个0组成,如果将月和日写成4位,为0222,也是由3个2和1个0组成,如果将时间中的......
  • Luogu P8773 [蓝桥杯 2022 省 A] 选数异或
    https://www.luogu.com.cn/problem/P8773因为\(a\texttt{xor}b=c\)则\(a\texttt{xor}c=b\),对于\(a_i\)找到\(a_i\texttt{xor}x\)离其最近的位置,放在ST......
  • Luogu P8710 [蓝桥杯 2020 省 AB1] 网络分析
    https://www.luogu.com.cn/problem/P7191发现一个性质:最多只会合并\(n-1\)次(类似树只有\(n-1\)条边)。于是在合并的时候暴力统计即可。时间复杂度\(O(n^2+m)\)。......
  • 蓝桥杯 枚举2 27题 直线
    题目描述本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。在平面直角坐标系中,两点可以确定一条直线。如果有多点在一条直线上,那么这些点中任意两......
  • 蓝桥真题 - 跑步锻炼
    题目跑步锻炼标签:填空题2020省赛每天跑1km,逢周一或月初每天跑2km,若既是周一又是月初也只跑2km。计算从2000-1-1(含)到2020-10-1(含)共跑了多少千米。代码importdatetim......
  • 蓝桥杯-网络分析
    网络分析小明正在做一个网络实验。他设置了n台电脑,称为节点,用于收发和存储数据。初始时,所有节点都是独立的,不存在任何连接。小明可以通过网线将两个节点连接起来,连接......
  • 12届蓝桥杯javab组真题
    12届蓝桥杯javab组真题A,ASC签到题packagetrain;publicclasstest_5{publicstaticvoidmain(String[]args){System.out.println('L'+0);}}B,卡片此题......
  • 手写笔记17:错题整理“Full GC & 新生代 & 老年代”
    ......
  • 手写笔记16:错题整理“继承 & 异常”
    ......