蓝桥杯省赛无忧 第二章 基础算法 课件22 模拟

发布时间:2024年01月17日

在这里插入图片描述

01 模拟算法介绍

在这里插入图片描述

02 例题讲解

在这里插入图片描述

https://www.lanqiao.cn/problems/549/learning/?page=1&first_category_id=1&problem_id=549
#include <iostream>
using namespace std;
int main()
{
  int n,m;
  cin>>n>>m;
  int a[n][m];
  int c[n][m];
  for(int i=0;i<n;i++)
  {
      for(int j=0;j<m;j++)
      {
          c[i][j]=0;
          cin>>a[i][j];
      }
  }
   for(int i=0;i<n;i++)
  {
      for(int j=0;j<m;j++)
      {
      if(a[i][j]==1)
          {
              c[i][j]=9;
              for(int b=i-1;b<=i+1;b++)
              {
                  for(int d=j-1;d<=j+1;d++)
                  {
                      if(a[b][d]==0&&b>=0&&d>=0)
                      {
                          c[b][d]++;
                      }
                  }
              }
          }
    }
}    
    for(int i=0;i<n;i++)
  {
      for(int j=0;j<m;j++)
      {
          cout<<c[i][j]<<" ";
      }
      cout<<"\n";
  }
  return 0;
}

在这里插入图片描述
在这里插入图片描述

https://www.lanqiao.cn/problems/551/learning/?page=1&first_category_id=1&problem_id=549
#include <iostream>
using namespace std;
const int N=110;
int a[N][N];
void water(int x,int y)
{
  a[x][y]=1;
  if(!a[x-1][y]) a[x-1][y]=1;
  if(!a[x+1][y]) a[x+1][y]=1;
  if(!a[x][y-1]) a[x][y-1]=1;
  if(!a[x][y+1]) a[x][y+1]=1;
}
int main()
{
   int n,m,t,k;
   cin>>n>>m;
   cin>>t;
   while(t--)   //第一分钟浇水完成
   {
     int x,y;
     cin>>x>>y;
     water(x,y);
   }
     cin>>k;
     int g=k-1;
       if(k>1)    //一分钟后开始传染
      {
        while(g--)
        {
          for(int i=1;i<=n;i++)
            for(int j=1;j<=m;j++)
            {
                 if(a[i][j]==1)
                 {
                   water(i,j);
                 }
            }
        }
      }
      int res=0;
      for(int i=1;i<=n;i++)
            for(int j=1;j<=m;j++)
            {
                 if(a[i][j]==1)
                 {
                  res++;
                 }
            }
            cout<<res;
  return 0;
}

在这里插入图片描述
在这里插入图片描述

https://www.lanqiao.cn/problems/498/learning/?page=1&first_category_id=1&problem_id=498
#include<stdio.h>
int f(int n, int m) //判断n逆序是否为n
{
    int x = 0;
    while(n) // 将n逆序赋值为x
    {
        x = x * 10 + n % 10;
        n /= 10;
    }
    if(x == m) return 1;
    else return 0;
}
int main(void)
{
    int n, i, ans[20000], t = 0;
    scanf("%d", &n);
    for (i = n+1; i < 99000000; i++)
    {
        if ((i%10000/100 > 12) || (i%10000/100 == 0) || i%10000%100 > 31) continue; //判断月和日是否合法,不合法直接跳出当前循环
        if ( f(i/10000, i%10000) ) ans[++t] = i; 
        if (t == 1000) break; //t尽量设置大一些,保证在这个范围里会出现ababbaba型的回文日期
    }
    printf("%d\n", ans[1]); //输出日期之后下一个回文日期
    for (i = 1; i <= t; i++)
    {
        if(ans[i]/10000%100 == ans[i]/10000/100) //判断开头是否为ABAB型
        {
            printf("%d\n", ans[i]);
            break; //找到一个即可退出循环
        }
    }
    return 0;
}

在这里插入图片描述

文章来源:https://blog.csdn.net/weixin_74774974/article/details/135658907
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。