实战DELPHI:远程线程插入(DLL注入)
2010-12-10 16:39
148 查看
汉诺塔这么经典的算法,虽然很早就听说过但是真正玩还是今天。看起来好象很麻烦,但是只要抓住了其中最重要的两步就迎刃而解了。
其实我们可以想象,最初有n个盘子在柱子a上,要将其全部挪到柱子b上。移动过程中盘子的顺序是不准颠倒的,还有一个辅助的柱子c。如果要解决问题,就要先将柱子a上的前n-1个盘子全部挪到柱子c上;这样,再将最后一个盘子挪到b上;最后再将柱子c上的n-1个盘子挪到b上就可以大功告成了。
上面这一大步就是这个算法的精髓了.
void HanNuoMove(char a, char b, char c, int n)
{
if(n == 1)
{
printf("move %d from %c to %c\n", n, a, b);
}
else
{
HanNuoMove(a, c, b, n-1);
printf("move %d from %c to %c\n", n, a, b);
HanNuoMove(c, b, a, n-1);
}
}
int main()
{
int n = 5;
char A = 'a';
char B = 'b';
char C = 'c';
HanNuoMove(A, B, C, n);
return 0;
}本文出自 “bluefish” 博客,请务必保留此出处http://bluefish.blog.51cto.com/214870/79922
其实我们可以想象,最初有n个盘子在柱子a上,要将其全部挪到柱子b上。移动过程中盘子的顺序是不准颠倒的,还有一个辅助的柱子c。如果要解决问题,就要先将柱子a上的前n-1个盘子全部挪到柱子c上;这样,再将最后一个盘子挪到b上;最后再将柱子c上的n-1个盘子挪到b上就可以大功告成了。
上面这一大步就是这个算法的精髓了.
void HanNuoMove(char a, char b, char c, int n)
{
if(n == 1)
{
printf("move %d from %c to %c\n", n, a, b);
}
else
{
HanNuoMove(a, c, b, n-1);
printf("move %d from %c to %c\n", n, a, b);
HanNuoMove(c, b, a, n-1);
}
}
int main()
{
int n = 5;
char A = 'a';
char B = 'b';
char C = 'c';
HanNuoMove(A, B, C, n);
return 0;
}本文出自 “bluefish” 博客,请务必保留此出处http://bluefish.blog.51cto.com/214870/79922
相关文章推荐
- 实战DELPHI:远程线程插入(DLL注入)
- delphi远程线程插入(DLL注入)
- 远程线程插入(DLL注入)
- WinAPI【远程注入】 远线程直接代码注入 Delphi实例
- 【windows核心编程】远程线程DLL注入
- Dll注入:X86/X64 远程线程CreateRemoteThread 注入
- 拦截API-通过远程线程dll注入目标进程
- 远程线程DLL注入
- Delphi利用CreateRemoteThread远程注入 详细 (非dll注入,是代码注入)
- 远程线程插入
- delphi 线程实战用法
- (纪念国殇).Net Hosting:托管远程线程插入及非托管dll线程插入实现
- [导入](纪念国殇).Net Hosting:托管远程线程插入及非托管dll线程插入实现
- 使用C#实现远程线程插入.
- (纪念国殇).Net Hosting:托管远程线程插入及非托管dll线程插入实现
- 病毒常用技术之远程线程 插入技术
- 远程线程插入
- 远程线程插入
- InjectDLL 远程注入 线程插入
- Delphi通过开启远程线程注射DLL至目标进程