C# 求简单高效算法
求算法:
有数组A和B, A{a,b,c,d,e,f}, B{1,2,3,4,5,6,7}
要求生成字符串X,可以指定生成X最小字符个数和最大字符个数,如果最小位数是0,则直接生成最大字符数
(X是由A和B中的元素拼接,可以仅A,也可以仅是B,也可以A和B都可以)
FUN(最小长度,最大长度)
{
if(最小长度是0)
{
就只生成最大长度
}
else
{
从最小长度开生成起,一直大最大长度
}
}
[解决办法]
需求不明,举例说明吧,比如 长度是2,输出什么,规则是什么
[解决办法]
还没明白
如果生成的长度为6,能不能生成abcdef呢?aaaaaa行吗?
是随机生成还是有规律的生成?如a1b2cd
[解决办法]
需求还是不明确,是否可以重复,如果不能重复,这个没有什么好的高效的算法,就是遍历了
[解决办法]
开始就将左右的情况遍历完毕,你这个貌似对顺序也没要求,遍历的结果可以放在哈希结构中,要结果的时候直接去取
[解决办法]
好像得用递归循环吧,帮顶
[解决办法]
这个要是没什么限制的的话,不如把2个序列合到一个序列中 C去
然后 var result=from a in C
select a;
//这个是取 1的时候.
var result= from a in C
from b in C
select string.format("{0}{1}",a,b);
//取2个的时候..要取多少自己加就得了
[解决办法]
[解决办法]
把A,B数组合并了,然后求子串就行了(只不过子串长度有规定而已,这种情况没有重复字符)。如果存在ff7,那么好像解就太多了。总体此算法不难。
[解决办法]
[解决办法]
a1和 1a .... abc 和cba这样的算不算重复了?
[解决办法]
那用我前面说的那个linq to sql 吧 没得问题了...
[解决办法]
你知道max=14时候结果有多少种吗? 你考虑过吗? 觉得真的有777存在?
[解决办法]
13的最大长度次方+13的(最大长度次方)+……+13的最小长度次方
楼主这是有多少解啊……
估计你没表述清楚,你这样说的话,分2个数组完全没意义。
[解决办法]
FF7... 为啥不是FFF?为啥不是777?谁规定了F比7大还是比7小?
[解决办法]
- C# code
using System;using System.Collections.Generic;using System.Text;namespace ConsoleApplication8{ class Program { public void fun(int min, int max,string a) { if (min == 0) { fun1(max, a); } else { for (int i = min; i <= max; i++) fun1(i, a); } } private void fun1(int p,string a) { string b; if (p == 1) { for (int i1 = 0; i1 < 13; i1++) { b = a.Substring(i1, 1); Console.WriteLine("{0}", b); } } if (p == 2) { for (int i1 = 0; i1 < 13; i1++) { for (int i2 = 0; i2 < 13; i2++) { b = a.Substring(i1, 1)+a.Substring(i2,1); Console.WriteLine("{0}", b); } } } if (p == 3) { for (int i1 = 0; i1 < 13; i1++) { for (int i2 = 0; i2 < 13; i2++) { for (int i3 = 0; i3 < 13; i3++) { b = a.Substring(i1, 1) + a.Substring(i2, 1) + a.Substring(i3, 1); Console.WriteLine("{0}", b); } } } } ....... if (p == 13) { } } static void Main(string[] args) { string a = "1234567abcdef"; Program g = new Program(); g.fun(1, 3, a); Console.ReadKey(); } }}
[解决办法]
省略地方自己加 你这种貌似更简单了