华为机试等式变换
【华为机试】等式变换
问题描述
输入一个正整数X,在下面的等式左边的数字之间添加 号或者-号,使得等式成立。
1 2 3 4 5 6 7 8 9 = X
比如:
12-34 5-67 89 = 5
1 23 4-5 6-7-8-9 = 5
请编写程序,统计满足输入整数的所有整数个数。
输入: 正整数,等式右边的数字
输出: 使该等式成立的个数
样例输入:5
样例输出:21
c 代码
// An highlighted block
#include <iostream>
#include <string>
using namespace std;
void dfs(int* a, int index, int subsum, int subsum1, int x, int* count, string s) {
if (index == 8) {
subsum = subsum subsum1;
if (subsum == x) {
count[0];
cout << s << endl;
}
return;
}
// op = ' '
dfs(a, index 1, subsum, subsum1 > 0 ? (10 * subsum1 a[index 1]) : (10 * subsum1 - a[index 1]), x, count, s to_string(a[index 1]));
// op = ' '
dfs(a, index 1, subsum subsum1, a[index 1], x, count, s ' ' to_string(a[index 1]));
// op = '-'
dfs(a, index 1, subsum subsum1, -a[index 1], x, count, s '-' to_string(a[index 1]));
}
int main(int argc, const char** argv)
{
int a[9] = { 1,2,3,4,5,6,7,8,9 };
int x;
string s;
s = "1";
int count[1] = { 0 };
while (cin >> x) {
dfs(a, 0, 0, 1, x, count, s);
cout << count[0] << endl;
}
return 0;
}
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgfckcc
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01