using System;
using System.Collections.Generic;
class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param num string字符串
* @param target int整型
* @return string字符串一维数组
*/
public List<string> addOpt (string num, int target) {
// write code here
if (string.IsNullOrWhiteSpace(num) || (num.Length == 1 && num[0] != target))
return null;
List<string> lsStr = new List<string>();
string strBDS = num.Substring(0, 1);
DG(num, target, int.Parse(strBDS), 1, ref lsStr, strBDS);
return lsStr;
}
public static void DG(string num, int target, int nCurR, int nL
, ref List<string> lsStr, string strBDS) {
// write code here
if (nCurR == target && nL == num.Length) {
lsStr.Add(strBDS);
return;
}
for (int nIndex = nL + 1; nIndex <= num.Length; nIndex++) {
string strLeft = num.Substring(nL, nIndex - nL);
int nLeft = int.Parse(strLeft);
//'+'加法
DG(num, target, nCurR + nLeft, nIndex, ref lsStr, strBDS + "+" + strLeft);
//'-'减法
DG(num, target, nCurR - nLeft, nIndex, ref lsStr, strBDS + "-" + strLeft);
//'*'乘法
DG(num, target, nCurR * nLeft, nIndex, ref lsStr, strBDS + "*" + strLeft);
////''拼接成多位数
//int nAdd = strBDS.LastIndexOf('+');
//int nSub = strBDS.LastIndexOf('-');
//int nMul = strBDS.LastIndexOf('*');
//int nMax = Math.Max(Math.Max(nAdd, nSub), nMul);
//if (nMax < 0)
// nCurR = int.Parse(strBDS + strLeft);
//else
//{
// string strL
// switch (strBDS[nMax])
// {
// case '+':
// nCurR +=
// break;
// case '-':
// break;
// case '*':
// break;
// }
//}
//DG(num, target, nCurR - nLeft, nIndex, ref lsStr, strBDS + strLeft);
}
}
}