使用蛮力法解数字迷(枚举的范围尽可能地小)(C++)(蛮力法)

算法经典题型18

使用蛮力法解数字迷(枚举的范围尽可能地小)

在这里插入图片描述

用到的思想—蛮力法
博主用到的环境:Win7, CodeBlocks等。

一、代码

 #include <iostream>

using namespace std;

int main()
{
long A,B,C,D,E,E1,F,G1,G2,i;
for(A=3;A<=9;A++)
for(B=0;B<=9;B++)
for(C=0;C<=9;C++)
{F=A*10000+B*1000+C*100+A*10+B;
E=F*A;
E1=E;
G1=E%10;
for(i=1;i<=5;i++)
{G2=G1;
E1=E1/10;
G1=E1%10;
if(G1!=G2)
break;}
if(i=6)
 cout<<F<<"*"<<A<<"="<<E<<endl;}
    return 0;
}

二、测试

在这里插入图片描述

总结

谢谢宝宝们的阅读,有问题的话评论@我,没问题的话点个赞再走哦~
在这里插入图片描述

"百元买百鸡"是一个经典的中国古代数学问题,通常用于说明二元一次方程组求解的思想。问题的大致意思是:有若干只鸡和若干文钱(每文钱可以购买一只小鸡),每只鸡的价格是一文钱,问如何用一百文钱恰好买到一百只鸡。 使用C++蛮力(暴力穷举)和分治来解决这个问题并不常见,因为这并不是最高效的方。不过,如果你坚持要用分治,这个场景其实更像是一种递归思想的应用,而不是真正的分治算法(比如快速排序、合并排序那种)。你可以这样考虑: 1. **基本情况**:如果有一百文钱,那么可以直接买下一百只鸡。 2. **递归情况**:假设你有一些剩余的钱(不足一百文),你需要找到所有可能的组合,使得每种组合中小鸡的数量加上剩余的钱刚好等于一百。你可以枚举每一种可能的小鸡数目,然后计算出相应需要的鸡和剩余的钱,再递归地尝试在这个基础上完成购买。 ```cpp #include <iostream> using namespace std; void buyChickens(int money, int target, int& chickens) { if (money == 0 && target == chickens) { // 达到目标,打印结果 cout << "Buy " << chickens << " chickens with " << target << " coins." << endl; } else if (money >= 0 && target <= chickens) { // 尝试购买一只鸡 buyChickens(money - 1, target + 1, chickens); // 如果还有钱,也尝试不买 buyChickens(money, target, chickens); } } int main() { int money = 100; // 百元 int target = 100; // 要买的鸡数 int chickens = 0; // 当前拥有的鸡 buyChickens(money, target, chickens); return 0; } ``` 然而,上述代码实际上是一个回溯搜索的过程,并不是严格意义上的分治算法。对于这类问题,动态规划(Dynamic Programming)会更适合。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王多鱼变成鱼

谢谢宝贝们支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值