C语言穷举法

您所在的位置:网站首页 ksp计算例题有答案 C语言穷举法

C语言穷举法

2023-07-20 13:04| 来源: 网络整理| 查看: 265

穷举法一般指枚举法

简介

在进行归纳推理时,如果逐个考察了某类事件的所有可能情况,因而得出一般结论,那么这结论是可靠的,这种归纳方法叫做枚举法。枚举法是利用计算机运算速度快、精确度高的特点,对要解决问题的所有可能情况,一个不漏地进行检验,从中找出符合要求的答案,因此枚举法是通过牺牲时间来换取答案的全面性。 

在数学和计算机科学理论中,一个集的枚举是列出某些有穷序列集的所有成员的程序,或者是一种特定类型对象的计数。这两种类型经常(但不总是)重叠。

特点

将问题的所有可能的答案一一列举,然后根据条件判断此答案是否合适,合适就保留,不合适就丢弃。例如:找出1到100之间的素数,需要将1到100之间的所有整数进行判断。

枚举算法因为要列举问题的所有可能的答案,所以它具备以下几个特点:

1、得到的结果肯定是正确的;

2、可能做了很多的无用功,浪费了宝贵的时间,效率低下。

3、通常会涉及到求极值(如最大,最小,最重等)。

4、数据量大的话,可能会造成时间崩溃。

                                                                                                                                                                       (以上来自百度百科)

 

穷举法将所有情况列举出来,再挑选出符合条件的情况。这种方法直接,准确度高,而且计算机运算速度高,可连续进行高准确度地计算,解决了该方法量大的问题。穷举法效率不高,仅适用于一些规律明显的问题。

C语言中一般通过循环来列举情况,复杂些的需要用到循环嵌套,最后再用判断语句来根据限制条件筛选出符合条件的情况。

例题

百元买鸡:我国古代数学家张丘建在《算经》一书中提出了“百鸡问题”:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?

分析:假设公鸡有x只,母鸡y只,小鸡z只。那x+y+z==100,且根据价格5*x+3*y+z/3==100。只要满足上面的两个等式的数量就行。我们可以利用C语言3重循环来穷举所有的答案。

#include #include int main() { int x,y,z; //x大鸡数量,y不大不小的数量,z小鸡的数量 for(x = 0; x < 100; x++) for(y = 0; y < 100; y++) { z=100-x-y; if(z < 0) continue; if(((x*3+y*2+z/3) == 100)&&((z%3) == 0)) //三种鸡花费一共100,z%3==0表示小鸡的数量一定要是3的倍数 { printf("x=%d,y=%d,z=%d\n",x,y,z); } } return 0; }

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3