您的当前位置:首页正文

蛮力法实验报告

2023-01-18 来源:易榕旅网


南华大学

计算机科学与技术学院

实 验 报 告

( 2011~2012 学年度 第 二 学期 )

课程名称

实验名称

姓名 tengzi

学号 20104030527

算法设计与分析

专业 电气信息类

班级 5班

地点 8—209

教师 余颖

实验二 蛮力法

一、 实验目的与要求

熟悉C/C++语言的集成开发环境; 通过本实验加深对蛮力法的理解。

二、 实验内容:

掌握蛮力法的概念和基本思想,并结合具体的问题学习如何用相应策略进行求解的方法。

三、 实验题

1. 某地刑侦大队对涉及六个嫌疑人的一桩疑案进行分析:(1)A、B至少有一人作案;(2)A、E、F三人中至少有两人参与作案;(3)A、D不可能是同案犯;(4)B、C或同时作案,或与本案无关;(5)C、D中有且仅有一人作案;(6)如果D没有参与作案,则E也不可能参与作案。试设计算法将作案人找出来。 2.

将1,2...9共9个数分成三组,分别组成三个三位数,且使这三个三位数构成1:2:3的

比例,试求出所有满足条件的三个三位数。

四、 实验步骤

理解算法思想和问题要求; 编程实现题目要求;

上机输入和调试自己所编的程序; 验证分析实验结果; 整理出实验报告。

五、 实验程序 1.犯罪问题

#include

using namespace std; int main() {

int A,B,C,D,E,F;

for(A=0;A<2;A++)

for(B=0;B<2;B++)

for(C=0;C<2;C++)

for(D=0;D<2;D++)

for(E=0;E<2;E++)

for(F=0;F<2;F++){

if( (A +B > 0 )&& (A+E+F >1)&& (A+D == 1)&& (B+C != 1)&& (C+D == 1 ) && (!(!D &&

cout<<\"A\"<<( A==1?\"作案\":\"非作案\" ); cout<<\"\\nB\"<<( B==1?\"作案\":\"非作案\" ); cout<<\"\\nC\"<<( C==1?\"作案\":\"非作案\" ); cout<<\"\\nD\"<<( D==1?\"作案\":\"非作案\" ); cout<<\"\\nE\"<<( E==1?\"作案\":\"非作案\" ); cout<<\"\\nF\"<<( F==1?\"作案\":\"非作案\" )<E))) {

} }

return 0;}

//============================== 2.9数问题

#include using namespace std;

int check(int t1,int t2,int t3); void main(){ int x,num=0;

for(x=123;x<987/3;x++)

if(check(x,2*x,3*x)) cout<<++num<<\": \"<int check(int t1,int t2,int t3) { int lRc; int temp1=45; long temp2=362880;

long a1=t1%10+t1/10%10+t1/100%10; long b1=t2%10+t2/10%10+t2/100%10; long c1=t3%10+t3/10%10+t3/100%10;

long a2=(t1%10)*(t1/10%10)*(t1/100%10); long b2=(t2%10)*(t2/10%10)*(t2/100%10); long c2=(t3%10)*(t3/10%10)*(t3/100%10);

if(((a1+b1+c1)==temp1) && (a2*b2*c2==temp2)) lRc=1; else

lRc=0; return lRc; }

实验结果 1.犯罪问题

2.9数问题

六、 实验分析

(1)理论上,蛮力法可以解决可计算领域的各种问题。 (2)蛮力法经常用来解决一些较小规模的问题。

(3)对于一些重要的问题(例如排序、查找、字符串匹配) ,蛮力法

可以产 生一些合理的算法,他们具备一些实用价值,而且不受问题规模的限制。

(4)蛮力法可以作为某类时间性能的底限,来衡量同样问题的更高效算

法。

因篇幅问题不能全部显示,请点此查看更多更全内容