//求指定数字内制定和的拼法 public static void GetA2() { int Num=10;//指定数字 int Sum = 10;//和 int[] arr = new int[10]; //结果集 List<string> list = new List<string>(); for (int a = 0; a < Sum; a++) { arr[a] = a + 1; } for (int q = 1; q < Sum+1; q++) { for (int w = 1; w < Sum+1; w++) { for (int e = 1; e < Sum+1; e++) { if (q != w && q != e&&w!=e) { if (q + w + e == 10) { string str = q + "|" + w + "|" + e; if (!list.Contains(str)) { list.Add(str); } } } } } } foreach (string str in list) { Console.WriteLine(str); } } } 求更好的!!!!坐等高手
//求指定数字内制定和的拼法 public static void GetA3() { //Num数字集合 Sum数字之和 List<string> list = new List<string>(); foreach (string str in GetNum(list, 10, 5,"")) { Console.WriteLine(str); } } public static List<string> GetNum(List<string> list, int Sum,int Num, string strss) { bool isCheck = true; if (Sum > 2) { for (int a =2; a < Num + 1; a++) { string str = ""; int first = a; int last = Sum - a; int[] arr = { first, last }; Array.Sort(arr); foreach (int c in arr) { str += c + "|"; } str = str.TrimEnd('|'); if (first != last && first > 0 && last > 0) { if (strss != "") { string strResult = str + "|" + strss; string[] ssArr = strResult.Split('|'); string[] strarr = strss.Split('|'); //Array.Sort(strarr); Array.Sort(ssArr); str = ""; foreach (string strR in ssArr) { str += strR + "|"; if (Convert.ToInt32(strR) > Num) isCheck = false; } str = str.TrimEnd('|'); if (!strarr.Contains(first.ToString()) && !strarr.Contains(last.ToString())) { if (!list.Contains(str)) { if (isCheck) { list.Add(str); //Console.WriteLine(str); } for (int n = 0; n < arr.Length; n++) { GetNum(list, Convert.ToInt32(arr[n]), Num, ArrToStr(arr, n, strss)); } } } } else { if (!list.Contains(str)) { if (first<=Num && last<=Num) { list.Add(str); //Console.WriteLine(str); } for (int index = 0; index < arr.Length; index++) { GetNum(list, arr[index], Num, ArrToStr(arr, index, "")); } } } } } } return list; } public static string ArrToStr(int[] arr,int index,string strA) {
string str=""; for (int a = 0; a < arr.Length; a++) { if (a != index) { str += arr[a].ToString() + "|"; } } if (str != "") { if (strA != "") { return str + strA; } return str.TrimEnd('|'); } return strA; } 求高手!!!!!
public static void GetA2()
{
int Num=10;//指定数字
int Sum = 10;//和
int[] arr = new int[10];
//结果集
List<string> list = new List<string>();
for (int a = 0; a < Sum; a++)
{
arr[a] = a + 1;
}
for (int q = 1; q < Sum+1; q++)
{
for (int w = 1; w < Sum+1; w++)
{
for (int e = 1; e < Sum+1; e++)
{
if (q != w && q != e&&w!=e)
{
if (q + w + e == 10)
{
string str = q + "|" + w + "|" + e;
if (!list.Contains(str))
{
list.Add(str);
}
}
}
}
}
}
foreach (string str in list)
{
Console.WriteLine(str);
}
}
}
求更好的!!!!坐等高手
public static void GetA3()
{
//Num数字集合 Sum数字之和
List<string> list = new List<string>();
foreach (string str in GetNum(list, 10, 5,""))
{
Console.WriteLine(str);
}
} public static List<string> GetNum(List<string> list, int Sum,int Num, string strss)
{
bool isCheck = true;
if (Sum > 2)
{
for (int a =2; a < Num + 1; a++)
{
string str = "";
int first = a;
int last = Sum - a;
int[] arr = { first, last };
Array.Sort(arr);
foreach (int c in arr)
{
str += c + "|";
}
str = str.TrimEnd('|');
if (first != last && first > 0 && last > 0)
{
if (strss != "")
{
string strResult = str + "|" + strss;
string[] ssArr = strResult.Split('|');
string[] strarr = strss.Split('|');
//Array.Sort(strarr);
Array.Sort(ssArr);
str = "";
foreach (string strR in ssArr)
{
str += strR + "|";
if (Convert.ToInt32(strR) > Num)
isCheck = false;
}
str = str.TrimEnd('|');
if (!strarr.Contains(first.ToString()) && !strarr.Contains(last.ToString()))
{
if (!list.Contains(str))
{
if (isCheck)
{
list.Add(str);
//Console.WriteLine(str);
}
for (int n = 0; n < arr.Length; n++)
{
GetNum(list, Convert.ToInt32(arr[n]), Num, ArrToStr(arr, n, strss));
}
}
}
}
else
{
if (!list.Contains(str))
{
if (first<=Num && last<=Num)
{
list.Add(str);
//Console.WriteLine(str);
}
for (int index = 0; index < arr.Length; index++)
{
GetNum(list, arr[index], Num, ArrToStr(arr, index, ""));
}
}
}
}
}
}
return list;
} public static string ArrToStr(int[] arr,int index,string strA)
{
string str="";
for (int a = 0; a < arr.Length; a++)
{
if (a != index)
{
str += arr[a].ToString() + "|";
}
}
if (str != "")
{
if (strA != "")
{
return str + strA;
}
return str.TrimEnd('|');
}
return strA;
}
求高手!!!!!