C/C++算法入门 | 简单模拟

2023-09-21 08:30:00

不爱生姜不吃醋⭐️
如果本文有什么错误的话欢迎在评论区中指正
与其明天开始,不如现在行动!


🌴前言

本文内容是关于C/C++算法入门的简单模拟题,没有涉及很复杂的算法,主要考察代码能力。模拟是一类“题目怎么说,你就怎么做”的题目,如果实现起来不太麻烦,就可以称之为“简单模拟”。这类题目不涉及算法,完全知识根据题目描述来进行代码的编写,所以考察的是代码能力。本文算法为:害死人不偿命的(3n+1)猜想和挖掘机技术哪家强。


🌴一、害死人不偿命的(3n+1)猜想

1.题目(PAT B1001)

题目描述

卡拉兹猜想:
对任何一个自然数n,如果它是偶数,那么就把它砍掉一半;如果它是奇数,那么把(3n+1)砍掉一半。这样一直反复砍下去,最后一定在某一步得到n=1。卡拉兹在1950年的世界数学家大会上公布了这一猜想,传说当时耶鲁大学师生齐动员,拼命想证明这个貌似很荒唐······
在此处并非想要证明卡拉兹猜想,而是对给定的任一不超过1000的正整数n,简单数一下,需要多少步才能得到n=1?

输入格式

每个测试输入包含1个测试用例,即给出自然数n的值。

输出格式

输出从n计算到1需要的步数

输入样例

3

输出样例

5

2.思路

  1. 首先对输入进行判断,如果是1,直接return 0
  2. 如果不是1,再进while循环判断奇偶
  3. 偶数直接除2
  4. 奇数先运算再除2
  5. 运算完的数再进行判断
  6. 每执行一次循环,计数器就加一

3.代码实现

#include <cstdio>

int stepNum(int a){
    if(a == 1){
        return 0;
    }

    int num = 0;
    while (a != 1)
    {
        if(a % 2 == 0){
            a /= 2;
        }else{
            a = (a * 3 + 1) / 2;
        }
        num++;
    }
    return num;
}

int main(){
    int a;
    scanf("%d", &a);
    int num = stepNum(a);
    printf("%d", num);
    return 0;
}

🌴二、挖掘机技术哪家强

1.题目(PAT B1032)

题目描述

为了用事实说明挖掘机技术到底哪家强,PAT组织了一场挖掘机技能大赛。请根据比赛结果统计出技术最强的那个学校。

输入格式

在第一行给出不超过10^5的正整数N,即参赛人数。随后N行,每行给出一位参赛者的信息和成绩,包括其所代表的学校的编号(从1开始连续编号)及其比赛成绩(百分制),中间以空格分隔。

输出格式

在一行中给出总得分最高的学校的编号及其总分,中间以空格分隔。题目保证答案唯一,没有并列。

输入样例

6
3 65
2 80
1 100
2 70
3 40
3 0

输出样例

2 150

2.思路

  1. 先确定参赛人数,由参赛人数来确定可以有几个得分
  2. 定义数组,把每个相同学校的得分相加
  3. 最终确定最高分和最高分的学校

3.代码实现

#include <cstdio>
#include <cmath>

const int N = pow(10,5);
int main(){
    int schID, score;
    int num;
    scanf("%d", &num);
    if(num > N){
        printf("参赛人数超出限制!");
        exit;
    }

    int gameNum[num] = {0};
    for (int i = 0; i < num; i++)
    {
        scanf("%d%d",&schID, &score);
        gameNum[schID] += score; 
    }

    int MAX = 0;
    int ID;
    for (int i = 0; i < num; i++)
    {
        if (gameNum[i] > MAX){
            MAX = gameNum[i];
            ID = i;
        }
    }
    printf("%d %d", ID, MAX);
    return 0;
}

🌴总结

文章中代码的编写使用的都是C/C++基础知识,多加练习熟能生巧。
本文中若是有出现的错误请在评论区或者私信指出,我再进行改正优化,如果文章对你有所帮助,请给博主一个宝贵的三连,感谢大家😘!!!


更多推荐

行为树的基本概念和C++库

一说明行为树是计算机科学、机器人技术、控制系统和视频游戏中使用的计划执行的数学模型。它们以模块化方式描述一组有限任务之间的切换。他们的优势来自于他们能够创建由简单任务组成的非常复杂的任务,而不用担心简单任务是如何实现的。行为树与分层状​​态机有一些相似之处关键区别在于行为的主要构建块是任务而不是状态。它易于人类理解,使

服务器中了勒索病毒怎么办?勒索病毒解密,数据恢复

勒索病毒是一种比较常见的电脑病毒,它们给企业的生产经营和发展带来了很大的影响。可是绝大多数企业在这方面并没有做合理的预案,这也导致当安全运维人员或者企业主发现中了勒索病毒以后手足无措。那云天数据恢复中心就用这篇文章来告诉大家当服务器中了勒索病毒怎么办。一,隔离受感染的电脑或者系统为了生产经营方便,很多用户的服务器或者电

七夕特别篇 | 浪漫的Bug

文章目录前言一、迷失的爱情漩涡(多线程中的错误同步)1.1Bug背景1.2Bug分析1.3Bug解决二、心形积分之恋(心形面积计算中的数值积分误差)1.1Bug背景1.1.1背景1.1.2数学模型1.2Bug分析1.2.1初始代码1.2.2代码工作流程图1.2.3代码分析1.3Bug解决三、总结Bug1:多线程环境中的

【已解决】matrix contains invalid numeric entries,记录bug修改

文章目录摘要原因解决办法图像分类网络AlexNetVGGNetGooLeNet系列ResNetDenseNetSwinTransformerMAECoAtNetConvNeXtV1、V2MobileNet系列MPViTVITSWAEfficientNet系列MOBILEVITEdgeViTsMixConvRepLKNe

绘图系统四:定制绘图风格

文章目录创建控件绘图风格可定制绘图风格的绘图系统代码组织📈一三维绘图系统📈二多图绘制系统📈三坐标轴定制源码地址Python打造动态绘图系统创建控件尽管从matplotlib的角度来说,绘图风格也算是图像类型的一部分,但诸如点线字体标题等内容太过复杂,为了减轻DrawType的负担,所以新建一个组件。有了DrawT

R语言RSTAN MCMC:NUTS采样算法用LASSO 构建贝叶斯线性回归模型分析职业声望数据...

全文链接:http://tecdat.cn/?p=24456如果你正在进行统计分析:想要加一些先验信息,最终你想要的是预测。所以你决定使用贝叶斯(点击文末“阅读原文”获取完整代码数据)。相关视频但是,你没有共轭先验。你可能会花费很长时间编写Metropolis-Hastings代码,优化接受率和提议分布,或者你可以使用

【医学影像数据处理】 Dicom 文件格式处理汇总

在医学影像的数据存储领域,是存在一定的行业标准的。X光、CT机器等等医疗器械等生产企业,会依据行业标准,对采集的数据进行规范化的存储。这里面就包括了大名鼎鼎的DICOM3.0协议,上述的摄影形式大部分也都是以这种形式进行存储和传播的。但是呢,在医学领域进行数据处理的时候,经常会遇到除DICOM外其他的数据形式,比如常见

gateway之断言的使用详解

文章目录gateway产生的背景,为什么要是用gateway什么是网关gateway带来的好处功能特征gateway在项目中使用的依赖什么是断言断言分类内置自定义示例断言和过滤器的不同gateway产生的背景,为什么要是用gateway一个系统会被拆分为多个微服务,作为客户端要如何去调用这么多的微服务?如果没有网关的存

使用 Amazon EC2 预留实例最大限度地节省成本和提高灵活性

简介:随着云计算不断改变企业的运营方式,优化成本已成为首要任务。利用AmazonEC2预留实例是实现云端成本节约最有效的方法之一。本文将探讨什么是AmazonEC2预留实例,它与按需实例的区别,以及它在成本节约和灵活性方面提供的好处。背景:云计算改变了IT格局,使企业能够按需扩展基础设施,仅为所消耗的资源付费。但是,随

短视频矩阵系统源代码开发搭建分享--代码开源SaaS

一、什么是短视频矩阵系统?短视频矩阵系统是专门为企业号商家、普通号商家提供帐号运营从流量到转化成交的一站式服务方案,具体包含:点赞关注评论主动私信,评论区回复,自动潜客户挖掘,矩阵号营销,自动化营销,粉丝管理等功能,可以帮助企业或商家快速批量制作高质量短视频,扩大企业宣传,提升企业经营效果。通过短视频矩阵系统的运营,可

React面试题总结(一)

1、redux本来是同步的,为什么它能执行异步代码?实现原理是什么?中间件的实现原理是什么?1、Redux-thunk这个中间件支持异步操作2、执行异步的操作首先需要下载一个thunk,通过thunk来进行异步的一个操作,支持异步操作,可以使用dispatch和getState来进行数据的获取或状态3、Redux是一个

热文推荐