★★★求较快的号码筛选算法!选出从0000000000000(共13位)到3333333333333(共13位)中所有可能出现的号码(每一位取值为0,1,3)

  • 主题发起人 主题发起人 Dp521
  • 开始时间 开始时间
D

Dp521

Unregistered / Unconfirmed
GUEST, unregistred user!
★★★求较快的号码筛选算法!选出从0000000000000(共13位)到3333333333333(共13位)中所有可能出现的号码(每一位取值为0,1,3) (100分)<br />如题!然后'选出所有符合的号码,每一位取值只能为0,1,3'
 
这还能有什么快方法啊
只能用循环了
 
哈哈。足彩
有空搞一搞
 
啥意思?
 
只帮你想到:
从0->1+2+7+1+2+17+1+2+67+
1+2+7+1+2+17+1+2+67+
......->100
 
循环选啊,不过我还没有看出来是什么意思
 
最好不要给出如下答案:
从0->开始+1,每加一次判断每一位符合要求->33333....:)
 
用递归不好吗
很快的
 
楼上各位大侠的循环也好,递归也罢,算法说得更细致些才能体现程序的精髓啊!
 
把13位数3333333333333分成几部分,用多线程分别对每一个对应的线程进行计算,最后再
汇总结果。
 
13层的循环嵌套?
筛选是什么意思?这不是全排列吗?
 
总共有 13 * 3 = 39 种结果?39次运算不需优化。
你这个问题不够明确,或者你先给出一个解法,让别人能够理解?
 
又想到一法:
从0->循环+1->3333....(13位)
筛选时,把要选出的数当作三进制进行处理,If数中出现有2的数就不处理继续+1,行否?
 
To:各位
dgates的算法可以实现,但不晓得是否较快!
 
是这个意思吗:
procedure TForm1.Button1Click(Sender: TObject);
var
i,num : integer;
str : string;
begin
randomize;
str := '';
for i := 1 to 13do
begin
num := random(3);
if( num = 2)then
num := num + 1;
str := str + inttostr(num);
end;
memo1.Lines.Add(str);
end;

不知道速度如何
 
多人接受答案了。
 
后退
顶部