闻风丧胆的算法(二)

🌈个人主页:Rookie Maker
🔥 系列专栏:算法
🏆🏆关注博主,随时获取更多关于IT的优质内容!🏆🏆  


😀欢迎来到我的代码世界~
😁 喜欢的小伙伴记得一键三连哦 ૮(˶ᵔ ᵕ ᵔ˶)ა


前言

在这里,或许你会有不一样的收获,不要一提算法就闻风丧胆,面对困难的最好的方法就是克服


一、模拟算法

1.模拟

模拟,属于入门级算法,顾名思义,就是让电脑按照题目所给出的方法来运行,最终输出所需要的结果的过程。

 2.例题:

eg1:求两个数之和

#include<iostream>
using namespace std;
//给出两个整数a,b,求和
//一步步实现
int main()
{
	int a, b = 0;
	cin >> a >> b ;//两个整数
	cout << a + b << endl;//求和
}

 eg2:国王将金币作为工资,发放给忠诚的骑士。第一天,骑士收到一枚金币;之后两天(第二天和第三天),每天收到两枚金币;之后三天(第四、五、六天),每天收到三枚金币;之后四天(第七、八、九、十天),每天收到四枚金币……;这种工资发放模式会一直这样延续下去:当连续 n天每天收到 n 枚金币后,骑士会在之后的连续 n+1天里,每天收到 n+1枚金币。

请计算在前 k 天里,骑士一共获得了多少金币。

#include<iostream>
using namespace std;
int main()
{
    int K, sum = 0, n = 0, i = 1;
    cin >> K;
    while (n != K) 
    {
        for (int j = 1; j <= i; j++)
        {
            sum += i;
            n++;
            if (n == K)
                break;
        }
        i++;
    }
    cout << sum << endl;
    return 0;
}
//动态跟踪次数
//当k=4时,k=4 n=0
//j=1 0!=4  sum=1 n=1  执行1次
//i=2 跳出循环 j=1 j=2 执行2次
//sum=1+2+2
//第四天和往后3天的金币一样多,怎么破局!if break 

eg3:冶炼金属 - 蓝桥云课 (lanqiao.cn)

#include<bits/stdc++.h>
using namespace std;
int main()
{
  int n;
  cin>>n;
  int mn=-1,mx=1e9;
  while(n--)
  {
    int a,b;
    cin>>a>>b;
    int l=a/(b+1)+1;
    int r=a/b;
    mn=max(mn,l);//
    mx=min(mx,r);
  }
cout<<mn<<" "<<mx<<endl;
return 0;
}//模拟:设置区间

 eg4:修剪灌木 - 蓝桥云课 (lanqiao.cn)

 

#include <iostream>
using namespace std;
int main()
{
  int n;
  cin>>n;

  for(int i = 1;i<=n;i++) cout<<max(i-1,n-i)*2<<endl;//先编译成功

  return 0;
}

 二.暴力法

暴力法(也称穷举法、枚举法或蛮力法)是指采用遍历(扫描)技术,即采用一定的策略将待求解问题的所有元素依次处理一次,从而找出问题的解。暴力法是基于计算机运算速度快这一特性,在解决问题时采取的一种“懒惰” 策略。这种策略不(或者说经过很少)思考,把问题所有情况或所有过程交给计算机去一一尝试,从中找出问题的解。

遍历

for循环

日期统计 - 蓝桥云课 (lanqiao.cn)

#include <iostream>
using namespace std;
int main()
{ 
  int a[100]={5,6,8,6,9,1,6,1,2,4,9,1,9,8,2,3,6,4,7,7,5,9,5,0,3,8,7,5,8,1,5,8,6,1,8,3,0,3,7,9,2,
  7,0,5,8,8,5,7,0,9,9,1,9,4,4,6,8,6,3,3,8,5,1,6,3,4,6,7,0,7,8,2,7,6,8,9,5,6,5,6,1,4,0,1,0,0,9,4,8,0,9,1,2,8,5,0,2,5,3,3};
  int month,day,num=0;
  for(month=1;month<=12;month++){
    if(month==2){
      day=28;
    }else if(month==1||month==3||month==5||month==7||month==8||month==10||month==12){
      day=31;
    }else{
      day=30;
    }
    for(int dd=1;dd<=day;dd++){
      int j=0;
      int b[8]={2,0,2,3,month/10,month%10,dd/10,dd%10};
      for(int i=1;i<100;i++){
        if(a[i]==b[j]){
          j++;
        }
        if(j==8){
          num++;
          break;
        }
      }
    }
  }
  cout<<num;
  return 0;
}

枚举

枚举出来各种情况

 刷题统计 - 蓝桥云课 (lanqiao.cn)

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
int main()
{
  LL a,b,n;
  cin>>a>>b>>n;
  LL res=n/(5*a+2*b)*7;
  LL d[]={a,a,a,a,a,b,b};
  n=n%(5*a+2*b);
  for(int i=0;n>0;i++)
  {
    n-=d[i];
    res++;
  }
  cout<<res<<endl;
  return 0;
}//枚举暴力解法

🎁🎁🎁今天的分享到这里就结束啦!如果觉得文章还不错的话,可以三连支持一下,您的支持就是我前进的动力! 

相关推荐

  1. 算法:不同叉搜索树

    2024-04-05 16:32:03       26 阅读
  2. 算法叉树所有路径

    2024-04-05 16:32:03       29 阅读
  3. 算法体系-12 第 十 叉树基本算法

    2024-04-05 16:32:03       37 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-05 16:32:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-05 16:32:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-05 16:32:03       82 阅读
  4. Python语言-面向对象

    2024-04-05 16:32:03       91 阅读

热门阅读

  1. 【C脚本】计算PCM的DBFS(分贝全尺度)

    2024-04-05 16:32:03       38 阅读
  2. 领地选择

    2024-04-05 16:32:03       39 阅读
  3. test000000

    2024-04-05 16:32:03       38 阅读
  4. LLM记录1

    2024-04-05 16:32:03       38 阅读
  5. 【C++算法】 卡常技巧

    2024-04-05 16:32:03       48 阅读
  6. Python程序设计 垃圾回收机制&鸭子类型

    2024-04-05 16:32:03       31 阅读
  7. vue3 模板编译过程

    2024-04-05 16:32:03       37 阅读
  8. 深度学习中的算子

    2024-04-05 16:32:03       27 阅读
  9. Linux服务器上安装多个版本cuda的一些准备

    2024-04-05 16:32:03       32 阅读
  10. 理想大模型实习面试题6道(答案解析)

    2024-04-05 16:32:03       36 阅读