#include <stdio.h>
int cnt = 0;
void conculate(int n, int sum, int preNum, int sign, int level) {
if (level == n) {
if (sum+preNum*sign == 0) cnt++;
return;
}
conculate(n, sum+preNum*sign, level+1, 1, level+1);
conculate(n, sum+preNum*sign, level+1, -1, level+1);
conculate(n, sum, (preNum*10+level+1)*sign, 1, level+1);
}
int main() {
int n;
scanf("%d",&n);
conculate(n, 0, 1, 1, 1);
printf("%d",cnt);
return 0;
}
问题描述
给定一个表示序列长度的整数n(3<=n<=9)。在序列1 2 3…n中插入‘+’,‘-’,‘ ’构造表达式,插入‘ ’表示前后两个数字构成一个整数,例如1 2 -3 -4 -5=0。
输出构造的所有表达式中,结果为0的表达式的数量,例如n=3时,只有表达式1+2-3=0,输出结果为1。
输入说明
输入数据为一个整数n(n<10),表示序列长度,同时表示输入序列为“1 2 3…n”。
输出说明
对于每一组数据,输出一个整数,表示构造的表达式中结果为0的表达式数量。