P1166 打保龄球

2024-09-07 02:28
文章标签 保龄球 p1166

本文主要是介绍P1166 打保龄球,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

共可以投 1 局
一局10轮
    在一局中,一共有十个柱,会出现很多种情况。
第1次把10个
   打倒全部   >>
       分数=10+后2次得分 --若是第10轮则还需另加两次滚球;

   没全部打倒 >>
       第2次把剩下的
           打倒   >>
               分数=10+后1次得分
       没全部打倒 >> 
           完蛋/没救了 >>
               分数=共打得分

#include<bits/stdc++.h>
using namespace std;
#define long long long long
inline long long read()
{
    long long x=0;
    char ch=getchar();
    bool f=0;
    for(; !isdigit(ch); ch=getchar()) if(ch=='-') f=1;
    for(; isdigit(ch); ch=getchar()) x=x*10+ch-'0';
    return f?-x:x;
}
void write(long long x)
{
    if(x<0) putchar('-'),x=-x;
    if(x>=10) write(x/10);
    putchar(x%10+'0');
}
void writeln(long long x)
{
    write(x);
    puts("");
}
void writep(long long x)
{
    write(x);
    putchar(' ');
}
int n,cnt,ans,sum[13];
char a[103];
int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);cout.tie(0);
    while(cin>>a[++n]);
    int st=1;
    for(int i=1; i<=10; i++)
    {
        int rest=10,flag=1;
        for(int j=st; j<=st+2; j++)
        {
            if(j>n)
            {
                sum[i]=-1;
                break;
            }
            if(rest==0) rest=10,flag=0;
            if(j==st+2 && flag) break;
            if(a[j]=='/') sum[i]+=rest,rest=0;
            else if(a[j]>='0' && a[j]<='9') sum[i]+=a[j]-'0',rest-=a[j]-'0';
        }
        if(sum[i]==-1) break;
        if(a[st]=='/') st++;
        else st+=2;
        writep(sum[i]);
    }
    puts("");
    for(int i=1; i<=10; i++)
    {
        if(sum[i]==-1) break;
        ans+=sum[i];
        writep(ans);
    }
    return 0;
}
 

#include<bits/stdc++.h>
using namespace std;
#define long long long long
inline long long read()
{long long x=0;char ch=getchar();bool f=0;for(; !isdigit(ch); ch=getchar()) if(ch=='-') f=1;for(; isdigit(ch); ch=getchar()) x=x*10+ch-'0';return f?-x:x;
}
void write(long long x)
{if(x<0) putchar('-'),x=-x;if(x>=10) write(x/10);putchar(x%10+'0');
}
void writeln(long long x)
{write(x);puts("");
}
void writep(long long x)
{write(x);putchar(' ');
}
int n,cnt,ans,sum[13];
char a[103];
int main()
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);while(cin>>a[++n]);int st=1;for(int i=1; i<=10; i++){int rest=10,flag=1;for(int j=st; j<=st+2; j++){if(j>n){sum[i]=-1;break;}if(rest==0) rest=10,flag=0;if(j==st+2 && flag) break;if(a[j]=='/') sum[i]+=rest,rest=0;else if(a[j]>='0' && a[j]<='9') sum[i]+=a[j]-'0',rest-=a[j]-'0';}if(sum[i]==-1) break;if(a[st]=='/') st++;else st+=2;writep(sum[i]);}puts("");for(int i=1; i<=10; i++){if(sum[i]==-1) break;ans+=sum[i];writep(ans);}return 0;
}

这篇关于P1166 打保龄球的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1143793

相关文章

P1918 保龄球题解

题目 DL算缘分算得很烦闷,所以常常到体育馆去打保龄球解闷。因为他保龄球已经打了几十年了,所以技术上不成问题,于是他就想玩点新花招。 DL的视力真的很不错,竟然能够数清楚在他前方十米左右每个位置的瓶子的数量。他突然发现这是一个炫耀自己好视力的借口——他看清远方瓶子的个数后从某个位置发球,这样就能打倒一定数量的瓶子。 ◯◯◯◯◯◯ ◯◯◯ ◯◯◯◯ ◯ ◯◯ ◯ ◯◯ ◯ 如上图,

疯狂的保龄球

效果图 帽子移动和点击鼠标重新开始 生产球以及球的位置 海鸥来回飞行 加分和加分特效以及分数到2时候弹出gameover图片 草坪代码,用来消除地面上的球

保龄球得分

package com.lovo; public class BowlingGame { public static final int TOTAL_ROUND = 10; // 总局数 private int[] scores;      // 记录每局得分的数组 private int[][] numberOfHits;    // 记录每局两球击倒瓶子个数的数组 private int

LeetCode 2660. 保龄球游戏的获胜者:模拟

【LetMeFly】2660.保龄球游戏的获胜者:模拟 力扣题目链接:https://leetcode.cn/problems/determine-the-winner-of-a-bowling-game/ 给你两个下标从 0 开始的整数数组 player1 和 player2 ,分别表示玩家 1 和玩家 2 击中的瓶数。 保龄球比赛由 n 轮组成,每轮的瓶数恰好为 10 。 假设玩家在第

2660. 保龄球游戏的获胜者 --力扣 --JAVA

题目 给你两个下标从 0 开始的整数数组 player1 和 player2 ,分别表示玩家 1 和玩家 2 击中的瓶数。 保龄球比赛由 n 轮组成,每轮的瓶数恰好为 10 。 假设玩家在第 i 轮中击中 xi 个瓶子。玩家第 i 轮的价值为: 如果玩家在该轮的前两轮的任何一轮中击中了 10 个瓶子,则为 2xi 。否则,为 xi 。 玩家的得分是其 n 轮价值的总和。 返回 如果玩家 1 的

2023.12.27力扣每日一题——保龄球游戏的获胜者

2023.12.27 题目来源我的题解方法一 模拟 题目来源 力扣每日一题;题序:2660 我的题解 方法一 模拟 就纯模拟,在计算玩家分数时,只要不是第一轮都需要判断前两轮中是否有得分为10的,若有则需要将本轮分数*2 时间复杂度:O(n)。其中 n 表示给定数组的长度。模拟只需要遍历每个数组一遍即可求出每只球队的得分,需要的时间为 O(n)。 空间复杂度

LeetCode——2660. 保龄球游戏的获胜者

通过万岁!!! 题目比较简单,就是给你两个数组,大小为n,分别表示n次投掷保龄球的得分。然后让你按照某种规则计算出最后的总得分,从而判断胜负。计算的规则就是如果出现了10分,那么接下来两轮的分数可以进行*2的操作。思路:遍历两个数组就好了,然后记录一下10分的位置,每次判断如果当前位置与10分的位置的具体小于2等于2,则这次的比分*2后再加到sum中。并且需要判断是不是要更新下标的位置。但是我写

【每日一题】保龄球游戏的获胜者

文章目录 Tag题目来源解题思路方法一:模拟 写在最后 Tag 【模拟】【数组】【2023-12-27】 题目来源 2660. 保龄球游戏的获胜者 解题思路 方法一:模拟 思路 本题较为简单,按照题目思路模拟即可。 遍历每一轮的击中的瓶子数,如果该轮的前两轮中有任何一轮击中了 10 个瓶子,则该轮的得分为瓶子数的二倍,否则该轮的得分即为瓶子数。

LeetCode 2660. 保龄球游戏的获胜者

目录 一、题目 1、题目描述 2、接口描述 3、原题链接 二、解题报告 1、思路分析 2、复杂度 3、代码详解 一、题目 1、题目描述 给你两个下标从 0 开始的整数数组 player1 和 player2 ,分别表示玩家 1 和玩家 2 击中的瓶数。 保龄球比赛由 n 轮组成,每轮的瓶数恰好为 10 。 假设玩家在第 i 轮中击中 xi 个瓶子。玩家第 i 轮

模拟打保龄球

题目要求如图 下面就是写的代码 package mt;public class Bowling {public static void main(String[] args) {int[] score_1 = new int[10]; //第i轮的第一球得分int[] score_2 = new int[10]; //第i轮的第二球得分int sumScore =0; //累计得分int