using System;
using System.Collections.Generic;


class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param nums int整型一维数组
     * @param target int整型
     * @return int整型
     */
    public int findTargetSumWays (List<int> nums, int target) {
        // write code here
            if (nums == null || nums.Count == 0)
                return 0;
            int nCount = 0;
            DG(nums, target, 0, ref nCount, 0);
            return nCount;
        }


        public void DG(List<int> nums, int target, int nCurIndex, ref int nCount, int nCurR)
        {
            // write code here
            if(nCurIndex >= nums.Count)
            {
                if (nCurR == target)
                    nCount++;
                return;
            }

            //+加法
            DG(nums, target, nCurIndex + 1, ref nCount, nCurR + nums[nCurIndex]);
            //+减法
            DG(nums, target, nCurIndex + 1, ref nCount, nCurR - nums[nCurIndex]);
        }
}