查看完整版本: 整数映射到排列的算法

admin 2007-12-1 08:59

整数映射到排列的算法

[color=#0800]//[/color][color=#0800]直接复制粘贴下来就能跑的[/color][color=#0800]
[img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif[/img][/color][color=#000]
[img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif[/img][/color][color=#00ff]using[/color][color=#000] System;
[img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif[/img][/color][color=#00ff]using[/color][color=#000] System.Collections.Generic;
[img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif[/img][/color][color=#00ff]using[/color][color=#000] System.Text;
[img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif[/img]
[img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif[/img][/color][color=#00ff]namespace[/color][color=#000] IntToP
[img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif[/img][img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif[/img][/color]...[color=#000]{
[img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif[/img]    [/color][color=#00ff]class[/color][color=#000] Program
[img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif[/img][img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif[/img]    [/color]...[color=#000]{
[img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif[/img]        [/color][color=#0800]//[/color][color=#0800]阶乘映射[/color][color=#0800]
[img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif[/img][/color]
[color=#00ff]static[/color]
[color=#00ff]ulong[/color][color=#000][] Jc;
[img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif[/img]
[img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif[/img]        [/color][color=#0800]//[/color][color=#0800]结果演示,重在说明整数到排列的映射,遍历全排列不是重点[/color][color=#0800]
[img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif[/img][/color]
[color=#00ff]static[/color]
[color=#00ff]void[/color][color=#000] Main([/color][color=#00ff]string[/color][color=#000][] args)
[img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif[/img][img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif[/img]        [/color]...[color=#000]{
[img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif[/img]            [/color][color=#0800]//[/color][color=#0800]计算阶乘,映射时会用到[/color][color=#0800]
[img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif[/img][/color][color=#000]            Jc [/color][color=#000]=[/color][color=#000] MakeJc();
[img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif[/img]            [/color][color=#0800]//[/color][color=#0800]这个值最大可以到20,表示最多演示多少个元素的排列[/color][color=#0800]
[img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif[/img][/color]
[color=#00ff]int[/color][color=#000] nMax [/color][color=#000]=[/color]
[color=#000]5[/color][color=#000];
[img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif[/img]            [/color][color=#0800]//[/color][color=#0800]表示排列的数组,用于承载排列结果[/color][color=#0800]
[img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif[/img][/color]
[color=#00ff]byte[/color][color=#000][] dict [/color][color=#000]=[/color]
[color=#00ff]new[/color]
[color=#00ff]byte[/color][color=#000][nMax];
[img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif[/img]
[img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif[/img]            [/color][color=#00ff]for[/color][color=#000] ([/color][color=#00ff]int[/color][color=#000] n [/color][color=#000]=[/color]
[color=#000]3[/color][color=#000]; n [/color][color=#000]<=[/color]
[color=#000]5[/color][color=#000]; [/color][color=#000]++[/color][color=#000]n)
[img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif[/img][img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif[/img]            [/color]...[color=#000]{
[img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif[/img]                Console.WriteLine([/color][color=#000]"[/color][color=#000]{0}个元素时,数值映射到排列的情况[/color][color=#000]"[/color][color=#000],n);
[img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif[/img]                [/color][color=#00ff]for[/color][color=#000] ([/color][color=#00ff]ulong[/color][color=#000] idx [/color][color=#000]=[/color]
[color=#000]0[/color][color=#000]; idx [/color][color=#000]<[/color][color=#000] Jc[n]; [/color][color=#000]++[/color][color=#000]idx)
[img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif[/img][img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif[/img]                [/color]...[color=#000]{
[img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif[/img]                    [/color][color=#0800]//[/color][color=#0800]计算(idx,n)对应的排列[/color][color=#0800]
[img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif[/img][/color][color=#000]                    computeDict(idx,dict, n);
[img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif[/img]                    [/color][color=#0800]//[/color][color=#0800]显示结果[/color][color=#0800]
[img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif[/img][/color][color=#000]                    Console.Write([/color][color=#00ff]string[/color][color=#000].Concat(idx.ToString(), [/color][color=#000]"[/color][color=#000]:[/color][color=#000]"[/color][color=#000]));
[img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif[/img]                    [/color][color=#00ff]for[/color][color=#000] ([/color][color=#00ff]int[/color][color=#000] i [/color][color=#000]=[/color][color=#000] n; [/color][color=#000]--[/color][color=#000]i [/color][color=#000]>=[/color]
[color=#000]0[/color][color=#000]; )
[img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif[/img][img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif[/img]                    [/color]...[color=#000]{
[img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif[/img]                        Console.Write([/color][color=#000]'[/color]
[color=#000]'[/color][color=#000]);
[img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif[/img]                        Console.Write(dict[i]);
[img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockEnd.gif[/img]                    }[/color][color=#000]
[img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif[/img]                    Console.WriteLine();
[img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockEnd.gif[/img]                }[/color][color=#000]
[img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockEnd.gif[/img]            }[/color][color=#000]
[img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif[/img]
[img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif[/img]            Console.ReadLine();
[img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockEnd.gif[/img]        }[/color][color=#000]
[img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif[/img][img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif[/img]        [/color]/**/[color=#808080]///[/color]
[color=#808080]<summary>[/color][color=#0800]
[img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif[/img]        [/color][color=#808080]///[/color][color=#0800] 把整数映射到排列,这个是核心
[img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif[/img]        [/color][color=#808080]///[/color]
[color=#808080]</summary>[/color][color=#0800]
[img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif[/img]        [/color][color=#808080]///[/color]
[color=#808080]<param name="index">[/color][color=#0800]要映射成排列的整数,排列的序号[/color][color=#808080]</param>[/color][color=#0800]
[img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif[/img]        [/color][color=#808080]///[/color]
[color=#808080]<param name="outDict">[/color][color=#0800]用于承载排列结果的数组[/color][color=#808080]</param>[/color][color=#0800]
[img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockEnd.gif[/img]        [/color][color=#808080]///[/color]
[color=#808080]<param name="len">[/color][color=#0800]排列的长度,表示是几个元素的排列[/color][color=#808080]</param>[/color]

[img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif[/img]
[color=#00ff]private[/color]
[color=#00ff]static[/color]
[color=#00ff]void[/color][color=#000] computeDict([/color][color=#00ff]ulong[/color][color=#000] index,[/color][color=#00ff]byte[/color][color=#000][] outDict, [/color][color=#00ff]int[/color][color=#000] len)
[img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif[/img][img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif[/img]        [/color]...[color=#000]{
[img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif[/img]            [/color][color=#00ff]for[/color][color=#000] ([/color][color=#00ff]int[/color][color=#000] i [/color][color=#000]=[/color][color=#000] len; [/color][color=#000]--[/color][color=#000]i [/color][color=#000]>=[/color]
[color=#000]0[/color][color=#000]; )
[img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif[/img][img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif[/img]            [/color]...[color=#000]{
[img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif[/img]                outDict[i] [/color][color=#000]=[/color]
[color=#000]0[/color][color=#000];
[img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockEnd.gif[/img]            }[/color][color=#000]
[img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif[/img]
[img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif[/img]           
[img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif[/img]            index [/color][color=#000]%=[/color][color=#000] Jc[len];
[img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif[/img]            [/color][color=#00ff]for[/color][color=#000] ([/color][color=#00ff]int[/color][color=#000] i [/color][color=#000]=[/color][color=#000] len [/color][color=#000]-[/color]
[color=#000]1[/color][color=#000]; i [/color][color=#000]>=[/color]
[color=#000]0[/color][color=#000]; [/color][color=#000]--[/color][color=#000]i)
[img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif[/img][img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif[/img]            [/color]...[color=#000]{
[img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif[/img]                outDict[i] [/color][color=#000]=[/color][color=#000] ([/color][color=#00ff]byte[/color][color=#000])(index [/color][color=#000]/[/color][color=#000] Jc[i]);
[img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif[/img]                index [/color][color=#000]%=[/color][color=#000] Jc[i];
[img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockEnd.gif[/img]            }[/color][color=#000]
[img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif[/img]
[img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif[/img]            [/color][color=#00ff]for[/color][color=#000] ([/color][color=#00ff]int[/color][color=#000] i [/color][color=#000]=[/color]
[color=#000]1[/color][color=#000]; i [/color][color=#000]<[/color][color=#000] len; [/color][color=#000]++[/color][color=#000]i)
[img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif[/img]                [/color][color=#00ff]for[/color][color=#000] ([/color][color=#00ff]int[/color][color=#000] j [/color][color=#000]=[/color]
[color=#000]0[/color][color=#000]; j [/color][color=#000]<[/color][color=#000] i; [/color][color=#000]++[/color][color=#000]j)
[img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif[/img]                    [/color][color=#00ff]if[/color][color=#000] (outDict[i] [/color][color=#000]<=[/color][color=#000] outDict[j])
[img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif[/img][img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif[/img]                    [/color]...[color=#000]{
[img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif[/img]                        [/color][color=#000]++[/color][color=#000]outDict[j];
[img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockEnd.gif[/img]                    }[/color][color=#000]
[img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockEnd.gif[/img]        }[/color][color=#000]
[img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif[/img][img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif[/img]        [/color]/**/[color=#808080]///[/color]
[color=#808080]<summary>[/color][color=#0800]
[img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif[/img]        [/color][color=#808080]///[/color][color=#0800] 计算阶乘,可以忽视
[img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif[/img]        [/color][color=#808080]///[/color]
[color=#808080]</summary>[/color][color=#0800]
[img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockEnd.gif[/img]        [/color][color=#808080]///[/color]
[color=#808080]<returns>[/color][color=#0800]返回包换了阶乘映射的数组[/color][color=#808080]</returns>[/color]

[img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif[/img]
[color=#00ff]private[/color]
[color=#00ff]static[/color]
[color=#00ff]ulong[/color][color=#000][] MakeJc()
[img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif[/img][img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif[/img]        [/color]...[color=#000]{
[img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif[/img]            [/color][color=#00ff]ulong[/color][color=#000][] result [/color][color=#000]=[/color]
[color=#00ff]new[/color]
[color=#00ff]ulong[/color][color=#000][[/color][color=#000]21[/color][color=#000]];[/color][color=#0800]//[/color][color=#0800]0 to 20[/color][color=#0800]
[img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif[/img][/color][color=#000]            result[[/color][color=#000]0[/color][color=#000]] [/color][color=#000]=[/color][color=#000] result[[/color][color=#000]1[/color][color=#000]] [/color][color=#000]=[/color]
[color=#000]1[/color][color=#000];
[img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif[/img]            [/color][color=#00ff]for[/color][color=#000] ([/color][color=#00ff]ulong[/color][color=#000] i [/color][color=#000]=[/color]
[color=#000]2[/color][color=#000]; i [/color][color=#000]<[/color]
[color=#000]21[/color][color=#000]; [/color][color=#000]++[/color][color=#000]i)
[img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif[/img][img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif[/img]            [/color]...[color=#000]{
[img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif[/img]                result[i] [/color][color=#000]=[/color][color=#000] result[i [/color][color=#000]-[/color]
[color=#000]1[/color][color=#000]] [/color][color=#000]*[/color][color=#000] i;
[img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockEnd.gif[/img]            }[/color][color=#000]
[img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif[/img]            [/color][color=#00ff]return[/color][color=#000] result;
[img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockEnd.gif[/img]        }[/color][color=#000]
[img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockEnd.gif[/img]    }[/color][color=#000]
[img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif[/img]}[/color]
页: [1]
查看完整版本: 整数映射到排列的算法
查看完整版本: 整数映射到排列的算法