c# 中 五个数字12345,有多少个不同的组合,用for循环写出来,求大神指教
答案:3 悬赏:40 手机版
解决时间 2021-01-31 06:47
- 提问者网友:低吟詩仙的傷
- 2021-01-30 21:40
c# 中 五个数字12345,有多少个不同的组合,用for循环写出来,求大神指教
最佳答案
- 五星知识达人网友:污到你湿
- 2021-01-30 22:03
int count = 0;
for (int i = 12345; i <= 54321; i++)
{
string temp = i.ToString();
if (temp.Contains("1") &&
temp.Contains("2") &&
temp.Contains("3") &&
temp.Contains("4") &&
temp.Contains("5"))
{
count++;
Console.WriteLine(temp);
}
}count就是组合的个数
console输出就是组合数字
追问。。。。。。问错了,不能用int 如果是abcde怎么做?而且不能重复追答1. 如果不光求出组合个数,还要输出每种组合,那就得用到递归函数了:
public static List Route(int count, ref string[] str)
{
if (count > 1)
{
List list = Route(count - 1, ref str);
List newList = new List();
for (int i = 0; i < count; i++)
{
for (int j = 0; j < list.Count; j++)
{
newList.Add(list[j].Insert(i, str[count - 1]));
}
}
return newList;
}
else
{
return new List() { str[0] };
}
}下面是调用例子:
string[] str = new string[] { "a", "b", "c", "d" };
List list = Route(str.Length, ref str);
2. 如果你只是想知道总个数,而不需要输出每种组合的话,那就是一个简单阶乘的算法了(1*2*3*4*....*n):
int count = 1;
for (int i = 1; i < str.Length + 1; i++)
{
count = count * i;
}str是输入的字符串(例如:12345, abcde), count就是组合的个数
for (int i = 12345; i <= 54321; i++)
{
string temp = i.ToString();
if (temp.Contains("1") &&
temp.Contains("2") &&
temp.Contains("3") &&
temp.Contains("4") &&
temp.Contains("5"))
{
count++;
Console.WriteLine(temp);
}
}count就是组合的个数
console输出就是组合数字
追问。。。。。。问错了,不能用int 如果是abcde怎么做?而且不能重复追答1. 如果不光求出组合个数,还要输出每种组合,那就得用到递归函数了:
public static List
{
if (count > 1)
{
List
List
for (int i = 0; i < count; i++)
{
for (int j = 0; j < list.Count; j++)
{
newList.Add(list[j].Insert(i, str[count - 1]));
}
}
return newList;
}
else
{
return new List
}
}下面是调用例子:
string[] str = new string[] { "a", "b", "c", "d" };
List
2. 如果你只是想知道总个数,而不需要输出每种组合的话,那就是一个简单阶乘的算法了(1*2*3*4*....*n):
int count = 1;
for (int i = 1; i < str.Length + 1; i++)
{
count = count * i;
}str是输入的字符串(例如:12345, abcde), count就是组合的个数
全部回答
- 1楼网友:孤独入客枕
- 2021-01-30 23:22
算不算1 2 3 单个数字的
①如果算就是
2*n-1(n位数字的个数) 如题就是:2*5-1=32-1=31
2*n是2的n次方个
②如果不算就是
5X4X3X2X1=120
①如果算就是
2*n-1(n位数字的个数) 如题就是:2*5-1=32-1=31
2*n是2的n次方个
②如果不算就是
5X4X3X2X1=120
- 2楼网友:十年萤火照君眠
- 2021-01-30 22:43
不用递归的算法,由于没有环境,只在java中测试过 mian方法里
String s[] = { "1", "2", "3" , "4" , "5"};
permutaions(s);
public static void permutaions(String[] s) {
for (int i = 0; i <= s.length; i++) {
permutation(s, i);
}
}
public static void permutation(String[] s, int m) {
// 检查
if (s == null || m < 0 || m > s.length) return;
int[] idxes = new int[m];
int idx = m - 1;
// 初始化第一组排列
for (int i = 0; i < m; i++) idxes[i] = i;
while (idx >= 0) {
if (idx == m - 1) {
output(s, idxes);
idxes[idx]++;
if (idxes[idx] == s.length) {
idx--;
// 剩余的不足以排列
while ((idx >=0) && ((s.length - idxes[idx]) <= (m - idx))) {
idx--;
}
}
} else {
idxes[idx]++;
// 初始化第一组排列
for (int i = idx + 1; i < m; i++) idxes[i] = idxes[i - 1] + 1;
idx = m - 1;
}
}
}
private static void output(String[] s, int[] idxes) {
for (int i = 0; i < idxes.length; i++) {
Console.Write(s[idxes[i]]);
}
Console.WriteLine();
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯