给出一个数字N,对于数字序列 1,2,3 ... N。现在在其中插入“+”, "-", " ",使得表达式的和为M。" "的含义是把相邻的两个数字组成一个数。例如:1 + 2 3 - 4,含义是:1 + 23 - 4 = 20。
给出N和M,求出所有合法的序列的个数。
两个整数N,M ( 1 <= N <= 7, -100 <= M <= 100)
合法序列的个数
7 0
6
样例中的六种合法序列
1+2-3+4-5-6+7
1+2-3-4+5+6-7
1-2 3+4+5+6+7
1-2 3-4 5+6 7
1-2+3+4-5+6-7
1-2-3-4-5+6+7
import java.util.Scanner; public class Main { private static int num; private static int target; private static int count=0; public static void main(String[] args) { Scanner scanner = new Scanner(System.in); num = scanner.nextInt(); target = scanner.nextInt(); dfs(0, 1); System.out.println(count); } private static void dfs(int sum,int p){ if (sum==target&&p==num+1) count++; int t=0; for (int i = p; i <=num; i++,t*=10) { t+=i; dfs(sum+t,i+1); if (p!=1){ dfs(sum-t,i+1); } } } }