LG1036
当我们看到这道题的时候,我们不仅大吼一声,这不就是搜索嘛。
于是搜索两大刀!搜索目标和搜索状态!
搜索目标:求选数的方案,以及他们的和是否为质数。
搜索状态:
1.从后往前分析目标(或从前往后):和是否为质数,很明显我们可以设计一个参数代表当前选数的和i,至于是否为质数的特判肯定就放到了函数里面了。但是你要注意和要为质数是在题目中对应的几个数相加才可以的来的,所以我们要设计一个参数来确定你选了几个数j,其实和,这个和是对应的。至于选数的方案,其实我们并不在意咋选的,我们需要一个参数能够,明确彰显搜索的每一步状态的,所以说我之前写过状态的设计需要,明确搜索步骤,或者说,准确得描述搜索步骤。当然根据我的感觉,一般用序数的东西比较好。比如这里人家设计的是k,代表你遍历到了第几个数。
综上,状态为(i,j,k),i代表你遍历到了第几个数;j代表你之前选的数的和;k代表你之前选了几个数。
但是人家的dfs中还有两部分,一部分是边界性问题,比如题目中给你4个数让你选,而你都选到了5个数,那显然不可能,那可能嘛》所以你这个时候就得return .
另一个部分是,设计下一步问题,其实这个感觉也是因题意而变。
分成(x+1,y,z)和
(x+1,y+a[x],z+1),这个就是两步,你遍历必须要经历的步骤,要么选,要么不选。
至于我觉得对我来说比较大的问题就是,关于这个质数的筛选,
我之前是这样写的
int isprime(int x)
{
if(x==) return -;
if(x==) return ;
int k=x;
int j=pow(k,/)+;
for(int i=;i<=j;i++) {
if(k%i==) return -;
} return ; }
但是只过了一半的点,然后根据下载的错误数据,我发现了问题在于质数的筛选上,于是我换了一个筛选质数的方法
int isprime(int x)
{
~~~
int k=x;
//大部分跟上一个一样
for(int i=2;i<=k;i++)
{
if(k%i==0) return -1; }
return 1 }
简单说我就是全枚举了一遍,然而上一个测试数据过了,但是还有几个都没过!比之前第一次过的还少!
没办法,看了别人的题解,发现了一种新的质数筛选的方法
int isprime(int x)
{ //其他都差不多,关键在于循环判断的条件上)
for(int i=;i*i<=x;i++)
****
}
然后这个就全过了。。。我也是。。。
不是很理解。
在我敲代码的时候,我必须得说,你没有考虑数据范围这个问题,因为人家之前给你提示了,
所以在思考题的时候一定要思考问题,防止报数据!
又出现了全局变量的问题。。。思考不全面,重新打一遍,
所以说最靠谱的是先在脑子里一遍过好。。
同时又出现了函数先后调用,定义函数顺序的问题。
所以再敲一遍给我的启示是,
1,考虑数据范围
2,考虑函数定义的先后顺序。
3,写代码前把东西都想好。
4,再敲一遍,一遍过。
5,至少这里要多定义全局变量。
6,注意每写一个模块,都要检查一下。
最后写完的时候,再检查所有。
LG1036的更多相关文章
随机推荐
- Python之路【第二十四篇】:数据库索引
数据库索引 一.索引简介 索引在mysql中也叫做"键",是存储引擎用于快速找到记录的一种数据结构.索引对于良好的性能非常关键,尤其是当表中的数据量越来越大时,索引对于性能的影响愈 ...
- expect——通过编写自动化脚本实现信息交互(整理)
本文简要介绍了expect工具语言的功能.用法,并以实例来具体说明 expect是什么 Expect是一个免费的编程工具语言,用来完成通信过程中的交互式任务,而无需人的干预. 通过shell虽然可以实 ...
- golang中,map作为函数参数是如何传递的
当你声明一个map的时候: m := make(map[int]int) 编译器会调用 runtime.makemap: // makemap implements a Go map creation ...
- Oracle--(Hierarchical Queries)层级查询(用于部门层级等)
原网址:https://www.cnblogs.com/guofeiji/p/5291486.html 如果表中包含层级数据,可以使用层级查询子句按层级顺序选择数据行,形成层级树,形式如下: 下面是层 ...
- 全栈项目|小书架|服务器端-NodeJS+Koa2 实现搜索功能
搜索功能会包含:热搜.搜索列表. 热搜功能在电商的搜索中经常看到,热搜数据的来源有两种 用户真实的搜索数据,根据算法进行排序 人为推送的数据 想想微博热搜是可以买的就知道热搜功能多么重要了. 我采用第 ...
- .Net Core WebApi(2)—Swagger
上一个版本的入门Swagger提示不够完整,这章着重完善和优化 Swagger用于将我们编写的接口自动生成规范化的文档,便于进行测试和对接 一.创建Swagger 1.1 Nuget 安装 ...
- K-匿名算法研究
12月的最后几天,研究了下k匿名算法,在这里总结下. 提出背景 Internet 技术.大容量存储技术的迅猛发 展以及数据共享范围的逐步扩大,数据的自动采集 和发布越来越频繁,信息共享较以前来得更为容 ...
- 使用MUI框架实现JQ购物车增减
// 购物车数量减少$('.reduce').click(function () { addMinus(this,0)}); // 购物车数量增加$('.increase').click(functi ...
- python通过装饰器检查函数参数的数据类型的代码
把内容过程中比较常用的一些内容记录起来,下面内容段是关于python通过装饰器检查函数参数的数据类型的内容. def check_accepts(f): assert len(types) == f. ...
- React-Native控件的生命周期
React-Native控件的生命周期