chapter2-暴力求解
1、枚举
对所有可能的情况进行枚举。面对枚举类型的题目,在想到思路的时候,要习惯于分析一下这种方法的复杂度是多少,结合题目的数据量分析这样的方法是否可行,然后再动手写代码,节约时间。
计算机1000MS,大约可进行10^7次运算。所以,常见的代码时间复杂度,1秒内可接受的数据量如下表:
复杂度 | 数据量 |
---|---|
O(n!) | 10 |
O(2^n) | 20 |
O(n^3) | 200 |
O(n^2) | 3000 |
O(nlogn) | 10^6 |
O(n) | 10^7 |
O(n^(1/2)) | 10^14 |
O(logn) | > 10^20 |
上表中,数据量就是n
最多能取值多少,不会导致超时错误。
2、模拟
只需利用程序实现题目的要求。模拟总共可分为3大类,分别是图形排版、日期问题、其他模拟,学习基本的做题思路之后,多加练习,那么这类题目就不会有太多困难。
- 图形排版:这种问题如果字符阵列的规律不太容易通过从上到下、从左到右的输出直接打印出来,那么思路是通过构造一个二维的字符数组,先根据题面要求画图形,总结规律并转换成数学公式,比如
h+2*i
这种,然后构造出图形保存到二维数组中,最后按顺序输出二维数组内容即可。如果图形可以直接打印出来的话,那么也要抽象出图形,标记边长、坐标什么的,总结出数学公式。 - 日期问题:一个公式,包含3个关键变量,日期A,天数,日期B,一般都是给你其中的两个变量,求另外一个变量,这类问题注意预处理(用空间换时间) 的概念,定义一个
dayTable[row][month]
数组,保存平年、闰年每个月的天数(PS:平年共365天/年,闰年366天/年),接着写一个判断是不是闰年的函数,如果是闰年,2月有29天,愉快编写主函数。 - 其他模拟:五花八门,只需根据题面要求进行模拟即可。同样可以采用预处理,用空间换时间的办法,简洁高效。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)