当前位置: 首页 > article >正文

模拟法简介(蓝桥杯)

      模拟法,顾名思义,就是利用计算机模拟问题的求解过程,从而得到问题的解。模拟法由于简单,因此又被称为“不是算法的算法”!

       模拟法是学习算法的基础,通过模拟可以学习编程的各类技巧,提升初学者建立各种编程逻辑模型的感觉。大部分模拟题目直接摸拟就可以求解,还有少量模拟题目需要考生简化模拟过程,否则可能会使逻辑复杂,导致求解用时过长。

      模拟法适用于问题求解清晰,运算规模较小的问题。如果问题求解的时空代价很大,就要考虑是否有其他更好的解决方案。

      【案例解析】不高兴的津津

      津津上初中了。妈妈认为津津应当更加用功地学习,所以津津除了上学之外,还要参加妈妈为她报名的各科复习班。另外,妈妈每周还会送她去学习朗诵、舞蹈和钢琴。但是津津如果一天上课超过8小时就会不高兴,而且上得越久就越不高兴。假设津津不会因为其他事不高兴,并且她的不高兴不会持续到第2天。请你帮忙检查津津下周的日程安排,看看她下周会不会不高兴;如果会,那么她哪天最不高兴。

     输入包括7行数据,分别表示周一到周日的日程安排。每行包括两个小于10的非负整数,用空格隔开,分别表示津津在学校上课的时间和妈妈安排她上课的时间。

     输出一个数字。如果津津不会不高兴,则输出0,如果会,则输出最不高兴的是周几(用1,2,3,4,5,6,7分别表示周一,周二,周三,周四,周五,周六,周日)。如果有两天或两天以上不高兴的程度相当,则输出时间最靠前的那一天。

例如,输入下列数据:

5 3

6 2

7 2

5 3

5 4

0 4

0 6

      则输出为3。

       本题可以采用模拟方法依次判断哪天最不高兴,并将最不高兴的那一天输出。在输出过程中要注意以下几个问题。

     (1)判断n个数中的最大值

 

max = 0;
for(i = 1; i <= n; i++)
{
	scanf("%d",&a);
	if(a > max)
	{
		max = a;
	}
 } 

(2)数据存储问题 

      本题的数据一共有7组,不算多,也不算少,可以直接运算,也可以将数据存储到数组后再进行计算。

       若不采用数组,则模拟的过程如下。

   

 int a,b,s,max = 0,i,day = 0;
 for(i = 1;i <= 7; i++)
 {
 	scanf("%d%d",&a,&b);
 	s = a+ b;
 	if((s > max) && (s > 8))
 	{
 		max = s,
 		day = i;
	 }
	 printf("%d",day);
 }

如果采用数组,则可以将数据存储起来,在后续的操作中会更加方便,也更容易理解。采用数组模拟的方法如下。

int a,b,i,day,max,array[8];
char c;
for(i = 1; i <= 7; i++)
{
	scanf("%d%d",&a,&b);
	array[i] = a + b;
}
max = array[0];
for(i = 1; i<= 7;i++)
  {
  	if(max < array[i])
     {
     	max = array[i];
     	day = i;
	 }
	  
  }
  if(max > 8)
     printf("%d",day);
  else
     printf("%d",0);

      模拟法一般都不难,但也会考查一些基础算法,例如本题考查了如何在n个数中求最大值,及如何判断津津的不高兴条件。


http://www.kler.cn/a/441754.html

相关文章:

  • 《重生到现代之从零开始的C++生活》—— 类和对象1
  • Kotlin协程中withContext、async 和 launch 的区别
  • linux如何并行执行命令
  • 玉米植物结构受乙烯生物合成基因 ZmACS7 的调控
  • SDL2:PC端编译使用 -- SDL2多媒体库使用音频实例
  • Node.js NativeAddon 构建工具:node-gyp 安装与配置完全指南
  • Sql注入(靶场)14-20关
  • 力扣.——560. 和为 K 的子数组
  • 关于SQL注入的面试题及经验分享
  • 测试框架 —— Playwright Fixture夹具有效利用的建议指南!
  • Springboot和vue前后端交互实现验证码登录
  • 【Leetcode 每日一题 - 扩展】1326. 灌溉花园的最少水龙头数目
  • 如何在 Ubuntu 22.04 上安装 Strapi CMS
  • [SAP ABAP] 序列化与反序列化
  • Javer学习Groovy
  • Chinese-Clip实现以文搜图和以图搜图
  • WPF Combox使用 Text无法选择正确获取CHange后的Text
  • java服务器中,如何判定是该使用单例系统,还是微服务架构,多库分布式,服务分布式,前端分布式
  • 2.Nuxt学习 组件使用和路由跳转相关
  • 关于SAP Router连接不稳定的改良
  • unity 雷达
  • SQL Server 表值函数使用示例
  • 负载均衡oj项目:介绍
  • mybatis的优化和补充
  • vue3修改elementui-plus的默认样式的几种方法
  • 基于Springboot + vue实现的手机商城系统