选数(Vijos P1128)

  此题为 Vijos P1128(非1028),感觉度娘好像有点抽

  贴出这个程序献丑了,今天早上过了一遍深搜,不怕大家笑话,深搜和广搜我还才开头呢!

  把N皇后问题递归和非递归算法过了一遍后,兴致勃勃的去Vijos上找题目练手(当然仅限于1、2难度,否则几天也憋不出一道题)。

  找到了P1128这道题,百度了一下是个非常经典的深搜,好,就这道题了!

  由于初学深搜,思维还没有融入其中,想法很死板,不由自主的就想到用几个循环,当然还是克制住了这个想法。

  仔细分析了一下题目的意思,感觉不需要判重(目前我还不会Hash),所以我觉得就是一个简单的裸搜吧,找到一个判断一次,符合条件就inc(total)。

  以下是筛选的代码,可以无视:

 

 1 procedure Judg_one(s:longint);
 2 var
 3         i:integer;
 4         bool:boolean;
 5 begin
 6         bool:=true;
 7         if s=2 then inc(total)
 8         else begin
 9                 for i:=2 to (s div 2) do
10                         if s mod i=0 then bool:=false;
11                 if bool=true then inc(total);
12                 end;
13 end;

 

  (我做题习惯分成几个模块分别写,不知道这样算不算坏习惯)

  判断神马的都是小问题,主要还是看如何通过递归回溯得到所有值。

  源程序代码如下:

  

 1 program p1128;
 2 var
 3         n,k,i,j,t,total:longint;
 4         x:array[1..1000] of longint;
 5 {===================}
 6 procedure Judg_one(s:longint);【判断是否为素数】
 7 var
 8         i:integer;
 9         bool:boolean;
10 begin
11         bool:=true;
12         if s=2 then inc(total)
13         else begin
14                 for i:=2 to (s div 2) do
15                         if s mod i=0 then bool:=false;
16                 if bool=true then inc(total);
17                 end;
18 end;
19 {===================}
20 procedure Dfs_try(t,s,p:longint);【Dfs回溯递归过程】【应该可以写成非递归,不过王大神说他写非递归循环写了好久果断放弃了】
21 var
22         q,i:longint;
23 begin
24         if p=k then begin Judg_one(s); exit end;【当p=k时,调用判断过程,退出当前递归层次】
25         for i:=t to n do
26         begin
27                 s:=s+x[i];
28                 p:=p+1;
29                 Dfs_try(i+1,s,p);【我觉得整个程序的精华就是这一句】
30                 s:=s-x[i];
31                 p:=p-1;
32         end;
33 end;
34 {=================== main =================}
35 begin
36         read(n);
37         read(k);    【读入数据】
38         for i:=1 to n do
39                 read(x[i]);
40         total:=0;
41         Dfs_try(1,0,0);
42         write(total);  【深搜结束后输出结果】
43 end.

 

  令我感到惊喜的是竟然一次AC了!!!不容易啊,这是一个好兆头。

  好了时间紧迫,去编下一道题了,今天争取多贴几道题出了,显得比较有成就感!诸位一起加油!

  原文地址:http://www.vijos.org/Problem_show.asp?id=1128

  QQ:85637720

  

  By ZYT

  12.10.05

转载于:https://www.cnblogs.com/cszyt/archive/2012/10/05/2712003.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
图像识别技术在病虫害检测中的应用是一个快速发展的领域,它结合了计算机视觉和机器学习算法来自动识别和分类植物上的病虫害。以下是这一技术的一些关键步骤和组成部分: 1. **数据收集**:首先需要收集大量的植物图像数据,这些数据包括健康植物的图像以及受不同病虫害影响的植物图像。 2. **图像预处理**:对收集到的图像进行处理,以提高后续分析的准确性。这可能包括调整亮度、对比度、去噪、裁剪、缩放等。 3. **特征提取**:从图像中提取有助于识别病虫害的特征。这些特征可能包括颜色、纹理、形状、边缘等。 4. **模型训练**:使用机器学习算法(如支持向量机、随机森林、卷积神经网络等)来训练模型。训练过程中,算法会学习如何根据提取的特征来识别不同的病虫害。 5. **模型验证和测试**:在独立的测试集上验证模型的性能,以确保其准确性和泛化能力。 6. **部署和应用**:将训练好的模型部署到实际的病虫害检测系统中,可以是移动应用、网页服务或集成到智能农业设备中。 7. **实时监测**:在实际应用中,系统可以实时接收植物图像,并快速给出病虫害的检测结果。 8. **持续学习**:随着时间的推移,系统可以不断学习新的病虫害样本,以提高其识别能力。 9. **用户界面**:为了方便用户使用,通常会有一个用户友好的界面,显示检测结果,并提供进一步的指导或建议。 这项技术的优势在于它可以快速、准确地识别出病虫害,甚至在早期阶段就能发现问题,从而及时采取措施。此外,它还可以减少对化学农药的依赖,支持可持续农业发展。随着技术的不断进步,图像识别在病虫害检测中的应用将越来越广泛。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值