专业编程基础技术教程

网站首页 > 基础教程 正文

C++经典算法 穷举法 穷举算法的优点

ccvgpt 2024-11-11 11:21:44 基础教程 9 ℃

穷举法也称为枚举法。穷举法的基本思想是根据题目的部分条件确定答案的大致范围,并在此范围内对所有可能的情况逐一验证,直到全部情况验证完毕。若某个情况验证符合题目的全部条件,则为本问题的一个解;若全部情况验证后都不符合题目的全部条件,则本题无解。

现给出几个穷举法经典程序:

C++经典算法 穷举法 穷举算法的优点

1. 一个奇异的三位数

想要一起学习C++的可以加裙626871916,群内有各种资料满足大家

#include<iostream>

using namespace std;

void main(void)

{

int i,j,k; //三个变量分别表示3个位

for(i=1;i<7;i++)//穷举九进制的第一位数字

{

for(j=0;j<7;j++)//穷举九进制的第二位数字

{

for(k=1;k<7;k++)//穷举九进制的第三位数字

{

if(i*9*9+j*9+k==i+j*7+k*7*7) //将九进制表示和七进制表示均转换为十进制数,判断是否相等

{

cout<<"所求的奇异三位数是:";

cout<<k<<j<<i<<"(7)="<<i<<j<<k<<"(9)="<<i*9*9+j*9+k<<"(10)"<<endl;

}

}

}

}

system("pause");

}

2. 求车速

想要一起学习C++的可以加裙626871916,群内有各种资料满足大家

#include<iostream>

using namespace std;

void main(void)

{

int m,m1,m2,i,k;

for(i=95860;i<100000;i++)//以95860为初值,循环试探

{

for(m=i,k=10000;k>0;k=k/100) //对每个i,将其赋给变量m进行取位和比较操作

{

m1=m%10;//m1为所取m值的最低位

m2=m/k;//m2为所取m值的最高位

if(m1==m2&&m>10)

m=(m-m2*k)/10;//去掉m的最低位和最高位组成的新数

else break;//否则不是回文

}

if(m<10)//是回文(对称数)

{

cout<<"汽车里程表上新的对称数是:"<<i<<endl;

cout<<"汽车速度是:"<<(i-95859)/2.0<<"公里/小时\n";

break;

}

}

system("pause");

}

3. 亲密数

想要一起学习C++的可以加裙626871916,群内有各种资料满足大家

#include<iostream>

using namespace std;

void main(void)

{

int a,i,b,n;

cout<<"3000内的亲密数有:"<<endl;

for(a=1;a<3000;a++)//穷举3000内的所有整数

{

for(b=0,i=1;i<=a/2;i++)//i为尝试因子。计算a的各因子,各因子之和存于b中

if(a%i==0) b+=i;

for(n=0,i=1;i<=b/2;i++)//i为尝试因子。计算b的各因子,各因子之和存于n中

if(b%i==0) n+=i;

if(n==a&&a<b)

cout<<a<<"......"<<b<<endl;

}

system("pause");

}

想要一起学习C++的可以加裙626871916,群内有各种资料满足大家

Tags:

最近发表
标签列表