3-9 趣味算式Java

本文介绍了一种趣味算法挑战,旨在通过调整数学运算符,使得由数字1至9组成的算式等于110。文章详细展示了多种解题思路,并提供了一个递归算法的实现代码,帮助读者理解如何快速找出所有可能的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/* 匪警请拨110,即使手机欠费也可拨通!
    为了保障社会秩序,保护人民群众生命财产安全,警察叔叔需要与罪犯斗智斗勇,因而需要经常性地进行体力训练和智力训练!
    某批警察叔叔正在进行智力训练:
    1 2 3 4 5 6 7 8 9 = 110;
  请看上边的算式,为了使等式成立,需要在数字间填入加号或者减号(可以不填,但不能填入其它符号)。
  之间没有填入符号的数字组合成一个数,
  例如:12+34+56+7-8+9 就是一种合格的填法;123+4+5+67-89 是另一个可能的答案。
  请你利用计算机的优势,帮助警察叔叔快速找到所有答案。
  每个答案占一行。形如:
12+34+56+7-8+9
123+4+5+67-89
......*/
//递归解法
public class Main {
	public static void main(String[] args) {
		int[] a = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
		fun(a, 8, "", 110);//
	}
	// k:当前元素; s:最终结果; goal:计算目标
	public	static void fun(int[] a, int k, String s, int goal) {
		//递归出口
		if (k == 0) {
				if (a[0] == goal)
					System.out.println(a[0] + s);
				return;
			}
			// 每执行下一步时,都更新goal值
			fun(a, k-1, "+" + a[k] + s, goal-a[k]);
			fun(a, k-1, "-" + a[k] + s, goal+a[k]);
			int old = a[k-1];
			// 把数字拼接起来,形成一个两位数或三位数
			a[k-1] = Integer.parseInt("" + a[k-1] + a[k]);
			fun(a, k-1, s, goal);
			a[k-1] = old;// 回溯
		}
}
/*运行结果
12+34+56+7-8+9
123+4-5-6-7-8+9
1+2+34+5+67-8+9
1+234-56-78+9
123-4+5-6-7+8-9
123-4-5+6+7-8-9
12+3+45+67-8-9
1-2+3+45-6+78-9
12-3+4-5+6+7+89
123+4+5+67-89*/

 

<think>好的,我现在需要帮助用户用C++编写一个程序,输出表达式90+8*9-7的结果,并且不需要任何输入。让我仔细想想该怎么处理这个问题。 首先,用户的要求是计算并输出这个算式的值。那我应该先确定这个表达式的运算顺序是否正确。根据C++的运算符优先级,乘法的优先级高于加减,所以8*9会先计算。那原式应该是90 + (8*9) -7。计算的话,8乘9是72,加上90等于162,再减去7就是155。所以正确的结果应该是155。 接下来是编写代码的问题。用户提到不需要输入,所以程序应该直接计算并输出结果。这时候,我需要考虑如何在C++中实现这个。通常的做法是在main函数里使用cout来输出表达式的结果。例如: cout << 90 + 8*9 -7 << endl; 这样就会直接计算这个表达式并输出结果。然后整个程序的结构应该是简单的,只需要包含必要的头文件,比如iostream,并使用命名空间std,或者不使用,而用std::cout等。 不过,用户可能希望代码更规范一些。比如,是否应该将计算部分存储在一个变量中,然后再输出?比如: int result = 90 + 8*9 -7; cout << result << endl; 这样做的好处是代码更清晰,尤其是当计算复杂时。但在这个例子中,表达式很简单,直接输出表达式的结果可能更简洁。 另外,是否需要考虑运算顺序是否需要加括号?比如,原式中的8*9是否会被正确处理。在C++中,乘法优先级确实高于加减,所以不需要额外括号。但为了代码可读性,可能会有开发者加上括号,不过这在这里不是必须的。 然后,检查是否所有必要的部分都包含在代码中。例如,需要包含头文件#include <iostream>,使用using namespace std;或者在cout前面加上std::。如果用户没有特别说明,可能默认使用using namespace std;会更简洁。 所以,整个程序的代码结构大致如下: #include <iostream> using namespace std; int main() { cout << 90 + 8*9 -7 << endl; return 0; } 或者,如果有变量存储结果: #include <iostream> using namespace std; int main() { int result = 90 + 8*9 -7; cout << "结果是:" << result << endl; return 0; } 但用户可能只需要输出结果,不需要额外的文字说明。所以直接输出数值可能更符合要求。不过问题描述中的例子可能需要输出算式本身吗?比如输出类似于“90+8*9-7=155”这样的形式? 原问题提到的是“输出90+8*9-7的算式结果”,所以可能只需要输出结果数值,而不是算式和结果一起。但可能需要确认这一点。例如,用户是否希望程序输出整个表达式及其结果,比如“90+8*9-7=155”。如果是这样,代码需要调整,将表达式字符串和计算结果拼接输出。 不过根据问题中的中文描述,“输出算式结果”可能是指计算该算式的值并输出,即结果部分。例如,直接输出155。但可能更常见的是,展示整个算式和结果,这样更直观。比如,输出“90+8*9-7=155”。 这时候,代码需要将表达式作为字符串输出,并计算结果。例如: cout << "90+8*9-7=" << (90 + 8*9 -7) << endl; 这时候的输出就会是完整的算式和结果。可能用户更希望看到这样的输出,而不仅仅是数字。我需要再仔细看问题描述。原问题提到“输出90+8*9-7的算式结果”,这里的“算式结果”可能是指计算该算式后的结果数值,所以输出155即可。或者可能希望同时显示算式和结果,比如“90+8*9-7=155”,这样更清晰。 这时候需要判断用户的意图。如果用户没有明确说明是否需要显示算式本身,可能需要给出两种情况。但在编程题目中,通常可能要求输出结果本身,所以直接输出数值。不过也可能需要将整个表达式和结果一起输出,比如作为示例程序,可能需要更详细的输出。 例如,在示例代码中,如果用户运行程序,希望看到的是类似于“计算结果为:155”或者算式和结果一起显示。这时候需要明确。但原问题描述可能更倾向于直接输出结果数值,不需要其他文字。 或者,可能用户希望程序输出的是算式本身和结果,例如,在控制台显示“90+8*9-7=155”,这样更直观。这时候,正确的代码应该将表达式字符串和计算结果结合起来输出。 这时候需要再仔细分析问题。用户的问题:“C++输出90+8*9-7的算式结果,无输入”。这里的“算式结果”可能指的是这个算式的计算结果,所以程序的任务是计算该表达式的值,然后输出它。可能的输出方式有两种:直接输出数值,或者输出算式后面跟着等号和结果。比如,输出155,或者输出“90+8*9-7=155”。 这时候需要根据常见的编程问题习惯来推断。例如,如果是学校作业或练习题,可能需要输出完整的算式和结果,而不仅仅是数值。例如,题目可能需要程序输出类似于: 90+8*9-7=155 这样的结果。因此,正确的代码应该包括输出整个表达式和计算结果。这时候,正确的代码应该把表达式作为字符串,然后计算结果。例如: #include <iostream> using namespace std; int main() { cout << "90+8*9-7=" << 90 + 8*9 -7 << endl; return 0; } 这样,输出就会是完整的算式和结果。可能用户想要的是这样的效果,而不仅仅是输出数值。但问题中的描述是否如此?需要进一步分析。 原问题的中文是“输出90+8*9-7的算式结果”,这里的“算式结果”可能被理解为算式的计算结果,即数值结果。但有时候,在数学问题中,输出算式和结果在一起更直观。例如,用户可能希望程序显示整个算式,然后等于结果,这样更清晰。所以在这种情况下,建议在输出中包含算式和结果,而不仅仅是数值。 因此,正确的做法是编写程序,输出类似于“90+8*9-7=155”这样的行。所以代码应该将表达式字符串和计算结果组合输出。 现在,我需要确认计算是否正确。原式:90 + 8*9 -7。计算步骤: 8*9=72 90+72=162 162-7=155。所以结果正确。 因此,代码应该输出算式和结果,如上面的例子所示。 总结步骤: 1. 确定运算顺序,确保结果正确。 2. 编写C++代码,输出算式和结果。 3. 确保代码不需要任何输入,直接运行输出。 因此,最终的代码应该是: #include <iostream> using namespace std; int main() { int result = 90 + 8 * 9 - 7; cout << "90+8*9-7=" << result << endl; // 或者直接在一行输出 // cout << "90+8*9-7=" << 90 +8*9 -7 << endl; return 0; } 这样,用户运行程序后,会看到算式和结果一起输出。这样的回答更符合用户的潜在需求,尤其是当用户需要展示算式和结果时。 因此,我应该建议用户使用这样的代码,同时解释运算的顺序和结果的计算过程。</think>以下是使用C++计算并输出表达式 `90 + 8*9 -7` 结果的示例代码: ```cpp #include <iostream> using namespace std; int main() { // 直接输出算式和计算结果 cout << "90+8*9-7=" << 90 + 8*9 -7 << endl; return 0; } ``` ### 代码说明: 1. **运算顺序**:根据运算符优先级,`8*9` 先计算得到 `72`,然后进行加减运算:`90 + 72 - 7 = 155`。 2. **输出格式**:使用 `cout` 直接拼接字符串和计算结果,输出完整的算式及结果,如 `90+8*9-7=155`。 3. **无输入**:程序直接计算,无需用户输入。 运行结果: ``` 90+8*9-7=155 ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值