首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

关于《算法导论》!该如何解决

2012-03-09 
关于《算法导论》!买了本机械工业出版社的《算法导论》,看的实在是太吃力了!小弟在此向各位前辈请教学习方法、

关于《算法导论》!
买了本机械工业出版社的《算法导论》,看的实在是太吃力了!
小弟在此向各位前辈请教学习方法、心得,望各位前辈赐教!先行谢过!

[解决办法]
一点一点做试验,动手看书
[解决办法]
是不是先熟悉一下数据结构会更好
[解决办法]
上学期我们也学过了算法,老师说本科生的要求只要理解就行,我们还真就信了,今年暑假在学校参加acm俱乐部才发现算法是要从写代码中来体会的...
[解决办法]
我也正在看这本书,英文原版。
感觉很爽!
[解决办法]
我今天下午就是研究全排序,不动手根本就不理解那些抽象的数学公式.

C# code
using System; using System.Collections.Generic; namespace Permulation {     class Program     {         static void Main(string[] args)         {             List <AnyType > L = new List <AnyType >();             L.Add(new AnyType(1));             L.Add(new AnyType(2));             L.Add(new AnyType(3));             L.Add(new AnyType(4));             L.Add(new AnyType(5));             L.Add(new AnyType(6));             List <List <AnyType > > P = new List <List <AnyType > >();             P = Permulation(L);             showPerm(P);             Console.WriteLine(P.Count);             Console.Read();         }         ///  <summary >         /// 排列函数。         ///设R={r1,r2,...,rn}是要进行排列的n个元素,Ri=R-{ri}.集X中元素的全排列记为Perm(X),         ///(ri)Perm(X)表示在全排列Perm(X)的每一个排列前加上前缀ri得到的排列.R的全排列可归纳定义如下:         ///当n=1时,Perm(R)={r},r是集合R中唯一的元素.         ///当n >1时,Perm(R)由(r1)Perm(R1),(r2)Perm(R2),....(rn)Perm(Rn)构成         ///  </summary >         ///  <param name="L" >输入的数字列表 </param >         ///  <returns >返回超集 </returns >         static List <List <AnyType > > Permulation(List <AnyType > L)         {             List <List <AnyType > > P = new List <List <AnyType > >();             for (int i = 0; i  < L.Count; i++)             {                 P = SecondStep(L[i], P);             }             return P;         }         ///  <summary >         /// 第一步:求(ri)Perm(X)         /// (ri)Perm(X)表示在全排列Perm(X)的每一个排列前加上前缀ri得到的排列         ///  </summary >         ///  <param name="ri" >输入数字 </param >         ///  <param name="PermX" >输入集合 </param >         ///  <returns >返回数字和集合合并后的超集 </returns >         static List <List <AnyType > > FirstStep(AnyType ri, List <AnyType > PermX)         {             List <List <AnyType > > resultFirstStep = new List <List <AnyType > >();             for (int m = 0; m  < PermX.Count + 1; m++)             {                 List <AnyType > tempPerm1 = new List <AnyType >(PermX);                 if (m  < PermX.Count)                 {                     tempPerm1.Insert(m, ri);                 }                 else                 {                     tempPerm1.Add(ri);                 }                 resultFirstStep.Add(tempPerm1);             }             return (resultFirstStep);         }         ///  <summary >         /// 第二步:         /// 当n=1时,Perm(R)={r},r是集合R中唯一的元素.         ///当n >1时,Perm(R)由(r1)Perm(R1),(r2)Perm(R2),....(rn)Perm(Rn)构成         ///  </summary >         ///  <param name="r" >输入数字 </param >         ///  <param name="PermR" >输入集合的集合 </param >         ///  <returns >返回数字和集合合并后的超集 </returns >         static List <List <AnyType > > SecondStep(AnyType r, List <List <AnyType > > PermR)         {             List <List <AnyType > > result = new List <List <AnyType > >();             if (PermR.Count == 0)             {                 result.Add(new List <AnyType >(new AnyType[] { r }));             }             else             {                 for (int i = 0; i  < PermR.Count; i++)                 {                     result.AddRange(FirstStep(r, PermR[i]));                 }             }             return (result);         }         ///  <summary >         /// 显示结果的。         ///  </summary >         ///  <param name="P" > </param >         static void showPerm(List <List <AnyType > > P)         {             for (int i = 0; i  < P.Count; i++)             {                 for (int j = 0; j  < P[i].Count; j++)                 {                     Console.Write(P[i][j].Value + " ");                 }                 Console.WriteLine();             }         }     }     ///  <summary >     /// 用来试验的类     ///  </summary >     public class AnyType     {         public AnyType(int x)         {             v = x;         }         private int v;         public int Value         {             get { return v; }             set { v = value; }         }     } } 


[解决办法]
不要只看书. 
多动手,多实践,你会迷上她的!

不过,如果你是为了应付考试,那就另当别论了.
[解决办法]
是本好书
[解决办法]
哈哈 抽象的数据类型 ADT 看看 C Primer Plus 的最后章
[解决办法]
有点厚
[解决办法]
先随便找找数据结构的书看看吧,至少有基础才行。然后就可以看CLRS了,其实大部分内容也挺基础的,难的先别看了

热点排行