玩牌高手

标题:玩牌高手 | 时间限制: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;
    }
}





全部评论

相关推荐

牛客40297450...:不是研究生强,是你强
点赞 评论 收藏
分享
09-24 18:30
已编辑
长春工业大学 产品经理
小肥罗:HR就是好人的缩写哈哈哈哈
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

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