《算法笔记知识点记录》第三章——入门模拟(1)

简介: 《算法笔记知识点记录》第三章——入门模拟(1)

☘前言☘

咕咕咕、鸽子精又回来了。🐒

今天是我开坑的第六次次发文,大家最近应该都在忙期末把?希望看到的你们可以有时间刷刷题。


今天就要开始解决实际问题了,可能是一个简单的问题从简单开始,一步步走到最后,你我皆超神。如果我有哪些没有讲清楚的,欢迎大家联系我,你提出的问题是我修改完善的基础,万分感谢。

欢迎大家加入我的打卡队列,如果你刷完了对你有帮助请你评论一个打卡。


如果觉得这个文章有用还希望大家交出素质三连呀。


🧑🏻作者简介:一个从工业设计改行学嵌入式的年轻人

✨联系方式:2201891280(QQ)

📔源码地址:https://gitee.com/xingleigao/algorithm-notes

⏳全文大约阅读时间: 80min


文章目录

 ☘前言☘

 🍭1.基础知识点

            🐶1.1简单模拟

            🎧1.2 查找元素

 🏑1.3 图形输出

 🏏1.4 日期处理

 🏂1.5 进制转换

 🥍1.6 字符串处理

 🐳课后习题

🍭1.基础知识点

学完了所有的C++入门知识,我们就具备了开始解决问题的能力。需要去习惯不同题型的出题习惯,然后才能不断完善直至超神。今天先看两个比较简单的例子。


🐶1.1简单模拟

模拟就是一类题目怎么说你就怎么做的题目,如果不牵扯到算法就是纯粹的模拟,也叫简单模拟,考察的主要是coding能力。 接下来我们看两道题:


【PAT B1001】 害死人不偿命的(3n+1)猜想 (15 分)

题目描述


卡拉兹(Callatz)猜想:

对任何一个正整数 n,如果它是偶数,那么把它砍掉一半;如果它是奇数,那么把 (3n+1) 砍掉一半。这样一直反复砍下去,最后一定在某一步得到 n=1。卡拉兹在 1950 年的世界数学家大会上公布了这个猜想,传说当时耶鲁大学师生齐动员,拼命想证明这个貌似很傻很天真的命题,结果闹得学生们无心学业,一心只证 (3n+1),以至于有人说这是一个阴谋,卡拉兹是在蓄意延缓美国数学界教学与科研的进展……

我们今天的题目不是证明卡拉兹猜想,而是对给定的任一不超过 1000 的正整数 n,简单地数一下,需要多少步(砍几下)才能得到 n=1?

输入格式:


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

输出格式:


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

样例输入


3


样例输出


5


解题思路


读入题目给出的n后,用while循环语句反复判断n是否为1:


如果n为1,则退出循环。

否则,如果是偶数就令n为n/2;如果是奇数就令n为``(3 * n + 1)/2。并令计数器 step++。

循环结束时就是所需要的答案。


参考代码


#include<cstdio>
int main(){
  int n, step = 0;
  scanf("%d",&n);
  while(n != 1){
  if(n %2 == 1) n = (3 * n + 1) / 2;
  else n = n/2;
  step++;
  }
  printf("%d\n",step);
  return 0;
}


【PAT B1032】 挖掘机技术哪家强


题目描述


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


输入格式:


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


输出格式:


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

样例输入


6

3 65

2 80

1 100

2 70

3 40

3 0

样例输出


2 150


解题思路


令数组school[maxn]记录每个学校的总分,初始值为0。对每个读入的学校schID与其对应的分数score,令school[schID]+=score。

令变量k记录最高总分的学校编号,变量MAX记录最高分,初始值为-1,由于学校的编号是连续的,所以枚举编号1~N-1,不断更新k和MAX就好。

参考代码


#include<cstdio>
const int maxn = 100010;
int school[maxn] = {0};
int main(){
  int n, schID, score;
  scanf("%d", &n);
  for(int i = 0;i < n;i++){
  scanf("%d %d", &schID, &score);
  school[schID] += score;
  }
  int MAX = -1, k = 0;
  for(int i = 1;i <= n;i++){
  if(school[i] > MAX){
    MAX = school[i];
    k = i;
  }
  }
  printf("%d %d\n", k, MAX);
  return 0;
}

🎧1.2 查找元素

有时会需要这样一种情况:

给定一些元素,然后查找某个满足某条件的元素,这是查找操作需要做的事情。查找是学习写代码的一种基本功,是肯定需要掌握的。

一般来说,如果需要在一个比较小范围数据集里进行查找,那么直接遍历每一个元素就好了。如果需要查找的范围很大,就需要使用二分(4.5节)。看一个简单的例子:


问题 B: 找x


题目描述


输入一个数n(1<=n<=200),然后输入n个数值各不相同,再输入一个值x,输出这个值在这个数组中的下标(从0开始,若不在数组中则输出-1)。


输入格式:


测试数据有多组,输入n(1<=n<=200),接着输入n个数,然后输入x。

输出格式:


对于每组输入,请输出结果。


样例输入


4

1 2 3 4

3


样例输出


2


解题思路


可以使用一个长度为n的数组保存所有元素,然后从0到n-1寻找元素,如果找到就输出对应的小标,找不到就输出-1。


参考代码


#include<cstdio>
const int maxn = 210;
int a[maxn];
int main(){
  int n, x;
    while(scanf("%d", &n) != EOF){
        for(int i = 0;i < n;i++)
            scanf("%d",&a[i]);
        scanf("%d",&x);
        int k;
        for(k = 0;k < n;k++){
            if(a[k] == x){
                break;
            }
        }
        if(k != n)  printf("%d\n",k);
        else printf("-1\n");
    }
  return 0;
}


相关文章
|
2月前
|
算法 搜索推荐 Java
数据结构与算法(Java篇)笔记--希尔排序
数据结构与算法(Java篇)笔记--希尔排序
|
14天前
|
存储 机器学习/深度学习 算法
|
1月前
|
机器学习/深度学习 人工智能 算法
分类算法入门:以鸢尾花数据集为例(上)
分类算法入门:以鸢尾花数据集为例(上)
36 2
|
1月前
|
机器学习/深度学习 算法 数据可视化
分类算法入门:以鸢尾花数据集为例(下)
分类算法入门:以鸢尾花数据集为例(下)
51 2
|
2月前
|
存储 算法 JavaScript
Java入门高频考查算法逻辑基础知识3-编程篇(超详细18题1.8万字参考编程实现)
解决这类问题时,建议采取下面的步骤: 理解数学原理:确保你懂得基本的数学公式和法则,这对于制定解决方案至关重要。 优化算法:了解时间复杂度和空间复杂度,并寻找优化的机会。特别注意避免不必要的重复计算。 代码实践:多编写实践代码,并确保你的代码是高效、清晰且稳健的。 错误检查和测试:要为你的代码编写测试案例,测试标准的、边缘情况以及异常输入。 进行复杂问题简化:面对复杂的问题时,先尝试简化问题,然后逐步分析和解决。 沟通和解释:在编写代码的时候清晰地沟通你的思路,不仅要写出正确的代码,还要能向面试官解释你的
35 0
|
2月前
|
存储 算法 搜索推荐
【C++ 数据结构与算法 一站式备考指南】一文掌握 数据结构与算法课程 知识点(二)
【C++ 数据结构与算法 一站式备考指南】一文掌握 数据结构与算法课程 知识点
95 2
|
2月前
|
存储 算法 C++
【C++ 数据结构与算法 一站式备考指南】一文掌握 数据结构与算法课程 知识点(一)
【C++ 数据结构与算法 一站式备考指南】一文掌握 数据结构与算法课程 知识点
52 2
|
2月前
|
存储 算法 JavaScript
【C++ 泛型编程 入门篇】 C++ 中的泛型算法 STL(sort,find)(二)
【C++ 泛型编程 入门篇】 C++ 中的泛型算法 STL(sort,find)
34 0
|
2月前
|
算法 搜索推荐 程序员
【C++ 泛型编程 入门篇】 C++ 中的泛型算法 STL(sort,find)(一)
【C++ 泛型编程 入门篇】 C++ 中的泛型算法 STL(sort,find)
41 0
|
2月前
|
算法 搜索推荐 Java
数据结构与算法(Java篇)笔记--快速排序
数据结构与算法(Java篇)笔记--快速排序