zoukankan      html  css  js  c++  java
  • 【PTA】猜数字

    L1-056 猜数字 (20分)

    一群人坐在一起,每人猜一个 100 以内的数,谁的数字最接近大家平均数的一半就赢。本题就要求你找出其中的赢家。

    输入格式:

    输入在第一行给出一个正整数N(104)。随后 N 行,每行给出一个玩家的名字(由不超过8个英文字母组成的字符串)和其猜的正整数(≤ 100)。

    输出格式:

    在一行中顺序输出:大家平均数的一半(只输出整数部分)、赢家的名字,其间以空格分隔。题目保证赢家是唯一的。

    输入样例:

    7
    Bob 35
    Amy 28
    James 98
    Alice 11
    Jack 45
    Smith 33
    Chris 62
    

    输出样例:

    22 Amy

    首先考虑到的是结构体Player来存储参加该游戏(猜数字)的玩家。
    然后呢,这些玩家有姓名用string字符串类型存储,还有进行游戏的数字100以内用整型int存储。
    获胜条件是接近平均数的一半,一开始我想的是四舍五入和小数上的问题,本来是想之后改进。
    在看到输入样例和输出样例,22 Amy的时候,用计算器算了一下,原本是小数的22变成了整数22。
    所以一直就用整型运算。
    首先是结构体
    typedef struct player
    {
        int guess;
        string name;
        int num;
    }Player;
    然后是num是玩家猜的数与平均数差的绝对值,其值用abs()函数在自带的cmath库。
    源代码是:
    #include <iostream>
    #include <cmath>
    using namespace std;
    
    typedef struct player//定义结构体Player
    {
        int guess; //玩家进行猜数的数字
        string name; //玩家姓名
        int num; //玩家猜的数字与平均数的一半差的绝对值
    }Player;
    
    int main()
    {
        int n;//玩家数量
        cin >> n;
        int sum=0;//猜数之和
        int average;//猜数平均数的一半
        Player player[10000];
        for (int i = 0; i < n; i++)
        {
            cin >> player[i].name;
            cin >> player[i].guess;
            sum += player[i].guess;
        }//录入信息
        average = sum / (2*n);
        for (int i = 0; i < n; i++)
        {
            player[i].num = abs(average - player[i].guess);//计算num
        }
        int min = 0;
        for (int i = 0; i < n; i++)
        {
            if (player[i].num < player[min].num) min = i;//求最小的num玩家下标,标记为min
        }
        cout << average << " " << player[min].name;//输出
    
    }


  • 相关阅读:
    优化你的手机游戏
    vuforia 结合 unity3d 开发 AR 的 androidAPP 总结
    self._raiseerror(v) File "D:GameDevelopmentPython27libxmletreeElementTree.py", line 1506, in _raiseerror
    自定义TexturePacker插件导出自己的plist文件
    还原TexturePacker plist 文件以及图片的方法 (切开各小图片)
    no module named firefly.master.master
    c#比较器 排序
    python ——面向对象进阶(反射,双下线方法,静态方法,类方法)
    python——模块和包 需要注意的地方
    举例详解Python中的split()函数的使用方法
  • 原文地址:https://www.cnblogs.com/Andre/p/12193678.html
Copyright © 2011-2022 走看看