C# 求简单高效算法

bugttp 2012-08-21 03:40:01
求算法:

有数组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
{
从最小长度开生成起,一直大最大长度

}

}

...全文
349 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
bugttp 2012-08-21
  • 打赏
  • 举报
回复
这里感谢 zhuankeshumo

先把分给了,见贴 http://topic.csdn.net/u/20120821/17/9a364a32-a3e3-439d-99f7-df7ff694d97e.html


newtee 2012-08-21
  • 打赏
  • 举报
回复
亲 求81分升3个小裤衩
newtee 2012-08-21
  • 打赏
  • 举报
回复
省略地方自己加 你这种貌似更简单了
newtee 2012-08-21
  • 打赏
  • 举报
回复
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();

}
}
}
YapingXin 2012-08-21
  • 打赏
  • 举报
回复
FF7... 为啥不是FFF?为啥不是777?谁规定了F比7大还是比7小?
bugttp 2012-08-21
  • 打赏
  • 举报
回复
求代码
xiaolll028 2012-08-21
  • 打赏
  • 举报
回复
13的最大长度次方+13的(最大长度次方)+……+13的最小长度次方


楼主这是有多少解啊……

估计你没表述清楚,你这样说的话,分2个数组完全没意义。
bugttp 2012-08-21
  • 打赏
  • 举报
回复
有达人给代码的吗?
bugttp 2012-08-21
  • 打赏
  • 举报
回复
.net 2.0 的
newtee 2012-08-21
  • 打赏
  • 举报
回复
你知道max=14时候结果有多少种吗? 你考虑过吗? 觉得真的有777存在?
zhanglong19891129 2012-08-21
  • 打赏
  • 举报
回复
那用我前面说的那个linq to sql 吧 没得问题了...
bugttp 2012-08-21
  • 打赏
  • 举报
回复
不算重复
zhanglong19891129 2012-08-21
  • 打赏
  • 举报
回复
a1和 1a .... abc 和cba这样的算不算重复了?
bugttp 2012-08-21
  • 打赏
  • 举报
回复
应该是777
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

例: 最小长度是1 ,最大长度是3 生成的应该是

a
b
c
d
e
f
a1
a2
a3
.........
ff7
[/Quote]
那个7咋来的?两个f咋来的
newtee 2012-08-21
  • 打赏
  • 举报
回复
把A,B数组合并了,然后求子串就行了(只不过子串长度有规定而已,这种情况没有重复字符)。如果存在ff7,那么好像解就太多了。总体此算法不难。
newtee 2012-08-21
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

例: 最小长度是1 ,最大长度是3 生成的应该是

a
b
c
d
e
f
a1
a2
a3
.........
ff7
[/Quote]ff7?
zhanglong19891129 2012-08-21
  • 打赏
  • 举报
回复
这个要是没什么限制的的话,不如把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个的时候..要取多少自己加就得了
--茶-- 2012-08-21
  • 打赏
  • 举报
回复
好像得用递归循环吧,帮顶
bugttp 2012-08-21
  • 打赏
  • 举报
回复
求代码!!!
加载更多回复(6)
算法和数据结构在计算机科学中具有极其重要的地位,它们是构建高效、可靠和可维护软件的关键。以下是关于算法和数据结构重要性的一些简要说明: 提高程序效率:合理选择和使用数据结构可以显著提高程序的执行效率。不同的数据结构适用于不同类型的问题和应用场景,一个合适的数据结构能够减少资源的消耗,提升系统的性能。同样,算法的设计和优化也对程序的功能性和性能起着关键作用,优秀的算法可以在更短的时间内解决问题,提高程序的运行速度。 节约存储空间:通过选择适当的数据结构和算法,可以更有效地利用存储空间,避免不必要的内存浪费。这在处理大量数据或资源受限的环境中尤为重要。 代码可读性和可维护性:良好的数据结构和算法设计可以使代码更加清晰、易于理解和维护。这对于软件开发过程中的团队协作、代码审查以及后续的功能扩展和修改都至关重要。 问题解决能力:算法是解决问题的有效工具,通过设计和实现正确的算法,我们能够处理各种实际和抽象的问题。从简单的排序和搜索问题到复杂的图像处理、机器学习等领域,都离不开算法的支持。 资源利用:优化的算法和数据结构有助于更合理地利用计算机资源,如CPU时间、内存和磁盘空间等。通过减少计算

110,500

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧