打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
"岛主" 同学给我出的算法题

问题来源: http://www.cnblogs.com/del/archive/2010/04/09/1708619.html#1798022

问题描述 - 给出几组数值范围, 如:
组一: 2..5
组二: 3..6
组三: 1..8
组四: 2..10
...

然后从每组中选一个数字, 依次排列成一个新的数字, 需要列出所有排列方式.

实现代码:
type  TArr = array of array[0..1] of Byte;procedure RangeNums(arr: TArr; List: TStrings);var  i,j,x,y,m,n,k,c,count: Integer;{i,j,x,y 用于循环}{m,n     分别用于前后循环的次数}{k       是从数组中取出的值}{c       是 List 的索引}{count   是 arr 的维数}begin  count := Length(arr);  for i := 0 to count - 1 do  begin    m := 1; n := 1; c := 0;    {先获取 m、n}    for j := 0 to count - 1 do    begin      if j < i then m := m * (arr[j,1] - arr[j,0] + 1);      if j > i then n := n * (arr[j,1] - arr[j,0] + 1);    end;    {循环与排列}    if i = 0 then      for k := arr[i,0] to arr[i,1] do for y := 0 to n - 1 do List.Add(IntToStr(k))    else begin      for x := 0 to m - 1 do for k := arr[i,0] to arr[i,1] do for y := 0 to n - 1 do      begin        List[c] := List[c] + IntToStr(k);        Inc(c);      end;    endend;end;//测试procedure TForm1.Button1Click(Sender: TObject);var  arr: TArr;  List: TStrings;begin  SetLength(arr, 3);  arr[0,0] := 2; arr[0,1] := 5;  arr[1,0] := 3; arr[1,1] := 6;  arr[2,0] := 1; arr[2,1] := 8;  List := TStringList.Create;  RangeNums(arr, List);  List.SaveToFile('C:\Temp\Nums.txt');  List.Free;end;

本例测试结果:
231 232 233 234 235 236 237 238 241 242 243 244 245 246 247 248 251 252 253 254 255 256 257 258 261 262 263 264 265 266 267 268 331 332 333 334 335 336 337 338 341 342 343 344 345 346 347 348 351 352 353 354 355 356 357 358 361 362 363 364 365 366 367 368 431 432 433 434 435 436 437 438 441 442 443 444 445 446 447 448 451 452 453 454 455 456 457 458 461 462 463 464 465 466 467 468 531 532 533 534 535 536 537 538 541 542 543 544 545 546 547 548 551 552 553 554 555 556 557 558 561 562 563 564 565 566 567 568
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
Delphi 中if else 的用法
delphi 结束进程
Delphi如何取指定打印机,指定纸张的宽宽度和高度等信息?
在dbgrideh中允许选择多行,如何知道哪些行被选中
linux awk手册
delphi 中如何批量为FROM上相同的控件赋值
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服