社区
新手乐园
帖子详情
求24问题?
sun1889
2005-10-20 01:26:02
运用加减乘除求出结果等于24。[C语言]
...全文
299
13
打赏
收藏
求24问题?
运用加减乘除求出结果等于24。[C语言]
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
tanghui0512
2005-10-22
打赏
举报
回复
有一个人家写的,自己看不大懂
#include "stdafx.h"
#include <iostream>
#include <string>
#include <cmath>
using namespace std;
const double PRECISION = 1E-6;
const int COUNT_OF_NUMBER = 4;
const int NUMBER_TO_CAL = 24;
double number[COUNT_OF_NUMBER];
string expression[COUNT_OF_NUMBER];
bool Search(int n)
{
if (n == 1) {
if ( fabs(number[0] - NUMBER_TO_CAL) < PRECISION ) {
cout << expression[0] << endl;
return true;
} else {
return false;
}
}
for (int i = 0; i < n; i++) {
for (int j = i + 1; j < n; j++) {
double a, b;
string expa, expb;
a = number[i];
b = number[j];
number[j] = number[n - 1];
expa = expression[i];
expb = expression[j];
expression[j] = expression[n - 1];
expression[i] = '(' + expa + '+' + expb + ')';
number[i] = a + b;
if ( Search(n - 1) ) return true;
expression[i] = '(' + expa + '-' + expb + ')';
number[i] = a - b;
if ( Search(n - 1) ) return true;
expression[i] = '(' + expb + '-' + expa + ')';
number[i] = b - a;
if ( Search(n - 1) ) return true;
expression[i] = '(' + expa + '*' + expb + ')';
number[i] = a * b;
if ( Search(n - 1) ) return true;
if (b != 0) {
expression[i] = '(' + expa + '/' + expb + ')';
number[i] = a / b;
if ( Search(n - 1) ) return true;
}
if (a != 0) {
expression[i] = '(' + expb + '/' + expa + ')';
number[i] = b / a;
if ( Search(n - 1) ) return true;
}
number[i] = a;
number[j] = b;
expression[i] = expa;
expression[j] = expb;
}
}
return false;
}
void main()
{
while(1)
{
cout<<"Input 4 Numbers:";
for (int i = 0; i < COUNT_OF_NUMBER; i++) {
char buffer[20];
int x;
cin >> x;
number[i] = x;
itoa(x, buffer, 10);
expression[i] = buffer;
}
if ( Search(COUNT_OF_NUMBER) ) {
cout << "Success." << endl;
} else {
cout << "Fail." << endl;
}
cout<<endl;
}
}
bombwang
2005-10-22
打赏
举报
回复
学习
appleyy
2005-10-21
打赏
举报
回复
完了,,我怎么向外送分啊。。。我给出的问题点数是20。
不知道怎么向外送,穷的就剩下点数了。哈哈!
-------------------------
管理
koil
2005-10-21
打赏
举报
回复
楼上星哥的,看不懂 解释下
qhfu
2005-10-21
打赏
举报
回复
#include <iostream>
#include <string>
#include <cmath>
using namespace std;
const double PRECISION = 0.00001;
double number[4];
string expression[4];
bool Search(int n)
{
if (n == 1)
{
if (fabs(number[0] - 24) < PRECISION)
{
cout << expression[0] << endl;
return true;
}
else
{
return false;
}
}
for (int i = 0; i < n; i++)
{
for (int j = i + 1; j < n; j++)
{
double a, b;
string expa, expb;
a = number[i];
b = number[j];
number[j] = number[n - 1];
expa = expression[i];
expb = expression[j];
expression[j] = expression[n - 1];
expression[i] = '(' + expa + '+' + expb + ')';
number[i] = a + b;
if (Search(n - 1)) return true;
expression[i] = '(' + expa + '-' + expb + ')';
number[i] = a - b;
if (Search(n - 1)) return true;
expression[i] = '(' + expb + '-' + expa + ')';
number[i] = b - a;
if (Search(n - 1)) return true;
expression[i] = '(' + expa + '*' + expb + ')';
number[i] = a * b;
if (Search(n - 1)) return true;
if (b != 0)
{
expression[i] = '(' + expa + '/' + expb + ')';
number[i] = a / b;
if (Search(n - 1)) return true;
}
if (a != 0)
{
expression[i] = '(' + expb + '/' + expa + ')';
number[i] = b / a;
if (Search(n - 1)) return true;
}
number[i] = a;
number[j] = b;
expression[i] = expa;
expression[j] = expb;
}
}
return false;
}
int main()
{
cout <<"Please input four numbers:" <<endl;
for (int i = 0; i < 4; i++)
{
char buffer[20];
int x;
cin >> x;
number[i] = x;
itoa(x, buffer, 10);
expression[i] = buffer;
}
if (Search(4))
{
cout << "Success." << endl;
}
else
{
cout << "Fail." << endl;
}
system("pause");
return 0;
}
sun1889
2005-10-21
打赏
举报
回复
完了,,我怎么向外送分啊。。。我给出的问题点数是20。
不知道怎么向外送,穷的就剩下点数了。哈哈!
yzisyz
2005-10-21
打赏
举报
回复
我曾经写过一个,算法也很笨。就是穷举给定的4个数字所有的表达式。然后对这些表达式求值......唯一要注意的就是要注意分数运算。速度还可以。
northwolves
2005-10-20
打赏
举报
回复
http://pzy.sgxf.com/ReadNews.asp?NewsID=156
chenhu_doc
2005-10-20
打赏
举报
回复
我们学校明天运动会,我当个体育部长,比较忙,就没有好多时间,不过我会尽快的写出来的 ! 就这样了 包涵!
sun1889
2005-10-20
打赏
举报
回复
TO:(小虎哥)
先把你的代码贴出来,学习一下!
chenhu_doc
2005-10-20
打赏
举报
回复
恩~~~~
楼主~~~~~~~~~~~~
难道不用象扑克牌中限制有四张牌么??
xiaocai0001
2005-10-20
打赏
举报
回复
用C++ 递归写过一个
chenhu_doc
2005-10-20
打赏
举报
回复
我只有很笨很笨的办法
在这里等高手
基于LLVM的Fortran编译器分析
目前基于LLVM的Fortran编译器(或者驱动)有3种,分别是flang、f18和flang-new。flang是pgfortran的开源版本,基于PGI/NVIDIA的商业Fortran 编译器,它并不从属于LLVM项目。NVIDIA团队在2018年宣布了Fortran的新前端——f18,f18是使用现代 C++ 从头开始编写的,它将与 LLVM 最佳实践紧密结合,并以 LLVM 和 clang 的风格编写,f18已经被纳入为LLVM子项目。flang-new是一
netCDF-Fortran 4.6.2 在Intel LLVM编译器下的构建
问题
分析
在SuSE Linux Enterprise Server 15操作系统上,使用Intel的LLVM编译器(mpiifx)构建netCDF-Fortran 4.6.2时遇到了构建失败的
问题
。该
问题
特别出现在使用较新的Intel LLVM编译器(ifx/mpiifx)时,而传统的Intel Fortran编译器(ifort/mpiifort)则能正常构建。 ## 构建环境配置 用户在构建时使用了...
说一下Intel Fortran 编译器经典版ifort和新一代ifx
摘要:ifort是Intel开发的传统Fortran编译器,以稳定性和遗留代码兼容性著称,现已进入维护模式。ifx则是基于LLVM架构的新一代Fortran编译器,具有更好的性能优化、更快的编译速度,并支持最新Fortran标准和GPU加速。英特尔计划逐步用ifx取代ifort,前者将成为未来主力发展的产品线。两者的核心区别在于技术基础(传统vs.现代化LLVM)和功能支持(维护状态vs.持续更新)。
介绍 AMD 的下一代 Fortran 编译器
在这篇博客文章中,我们分享了AMD的下一代Fortran编译器的预览,展示了我们新的编译器如何通过使用OpenMP卸载来帮助您在AMD GPU上部署和加速您的Fortran代码库,以及如何使用它与HIP和ROCm内核进行交互。我们展示了AMD的下一代Fortran编译器在AMD GPU上运行时与原生HIP/C++代码的竞争性能,并提供了我们新编译器的预生产版本的访问权限。
【亲测免费】 探秘经典Flang:一个强大的Fortran编译器
Flang,又称“经典Flang”,是一款基于LLVM的外置Fortran编译器,它是PGI/NVIDIA公司商业Fortran编译器pgfortran的开源版本。虽然它与2020年并入LLVM项目的新型Flang(原名F18)同源,但两者是不同的实现。经典Flang目前仍在多个下游商业项目中广泛使用,如AMD、Arm和华为的编译器,并且持续得到维护。 项目主页位于GitHub上,提供了详细的文...
新手乐园
33,316
社区成员
41,770
社区内容
发帖
与我相关
我的任务
新手乐园
C/C++ 新手乐园
复制链接
扫一扫
分享
社区描述
C/C++ 新手乐园
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章