玩牌高手

标题:玩牌高手 | 时间限制:1秒 | 内存限制:32768K | 语言限制:不限
给定一个长度为n的整型数组,表示一个选手在n轮内可选择的牌面分数。选手基于规则选牌,请计算所有轮结束后其可以获得的最高总分数。选择规则如下:
1、在每轮里选手可以选择获取该轮牌面,则其总分数加上该轮牌面分数,为其新的总分数。
2、选手也可不选择本轮牌面直接跳到下一轮,此时将当前总分数还原为3轮前的总分数若当前轮次小于等于3(即在第1、2、3轮选择跳过轮次),则总分数置为0。
3、选手的初始总分数为0,且必须依次参加每一轮。

while True:
    try:
        listinput = list(map(int, input().strip().split(',')))
        count = 0
        tmplist = []
        for i in range(len(listinput)):
            if i < 3:
                count += listinput[i]
                if count <= 0:
                    count = 0
                tmplist.append(count)
            else:
                count += listinput[i]
                if count >= tmplist[i-3]:
                    tmplist.append(count)
                else:
                    count = tmplist[i-3]
                    tmplist.append(tmplist[i-3])
        print(tmplist[-1])
    except:
        break
#include<bits/stdc++.h>
using namespace std;
vector<int>p;
int dp[100];
int main(){
    int n;
    while(1){
        cin>>n;
        p.push_back(n);
        char c=getchar();
        if(c=='\n')break;
    }
    dp[0]=max(0,p[0]);
    for(int i=1;i<p.size();i++){
        int pre;
        if(i<3)pre=0;
        else pre=dp[i-3];
        dp[i]=max(dp[i-1]+p[i],pre);
    }
    cout<<dp[p.size()-1]<<endl;
}

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main(){
    ll x,y;
    cin>>x>>y;
    ll sum=1;
    while(y--)sum*=26;
    if(sum>=x)cout<<1<<endl;
    else{
        int co=0;
        while(sum<x){
            sum*=10;
            co++;
        }
        cout<<co<<endl;
    }
}





全部评论

相关推荐

珩珺:那些经历都太大太空了,实习的情况不了解,大创项目连名字、背景、目的及意义都没体现出来;地摊经济更是看完连卖的什么产品都不知道,项目成果直接写营收多少都更直观真实一点;后面那个校文体部的更是工作内容是组织活动整理流程,成果变成了当志愿者,而且你们学校本科学生会大一入学就直接当部长吗,志愿里面还提到了疫情防控,全面解封是22年12月的事情,可能时间上也有冲突。可能你花了钱人家就用AI给你随便写了点内容改了一下,没什么体现个性化的点
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

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