我最近写了几篇TAOCP阅读笔记,大家可以去看看
其实我已近把全书很大一部分(除1.2,1.5,2.3,4,5节,及很多Execrise没写完)
好吧开始今天的写作。
(专有名词之前讲过了 大家可以去我之前的文章)了解

Question(TPS.cpp)

Input(TPS.qus)

第一行是一个数 NodeC,表示节点数
后面?行是两个数j,k,表示j在k前输出(1<j,k<=NodeC)
最后一行是两个0

Output(cout)

第1行:
一串从1到n的数字(无空格),并且对于在输入第2~n行出现的所有j,k,j在k前输出

若无满足的序列,则此行输出“Input Error”

第二行(这行是系统输出)

第一行若是Input Error,返回码为1
不然为0(听不懂?死一边去,就是出了错exit(1)不然return 0;)

Test

IN:
9
9 2
3 7
7 5
5 8
8 6
4 6
1 3
7 4
9 5
2 8
0 0OUT:
193274586
System Exit With Code 0

第二个例子:

IN:
1
1 1
0 0OUT:
Input Error
System Exit With Code 1

好了,这次我再讲讲思路
大家可以自己买TAOCP哈。

思考一下,拓扑排序无非就是寻找入度为0的那些Node,既然这样我们就应当把这些入度存下来。
为了方便找到值为0的NODE,我们可以把它存在一个Queue/Stack里
每找到一个无入度的NODE,我们需要遍历它所有的出度一遍,为了节省空间复杂度,同时方便遍历出度,我们可以用邻接表替代邻接矩阵。

对了,动态内存分配和指针这次会大量出现,请坐稳扶好。

code:

#include<iostream>
#include<fstream>
#include<queue>
#include<cstring>
#include<cstdlib>
#define ML 1000
using namespace std;struct Node{Node* next;int v;
};ifstream fin("TPS.qus");
Node* nds=NULL;//自动分配装逼(内存泄漏,深感不安)
queue<int> zs;
queue<int> LR;int cnt=0;
int un_print=0;int main(){//"Tobological sort"//T1//输入fin>>cnt;un_print=cnt;//calloc了解一下//auto allocate memnds=(Node*)calloc(cnt+1,sizeof(Node));//直接访问1~n,免得减一for(int i=1;i<=cnt;++i){//calloc 自动将值设为0nds[i].next=NULL;}int j=0;int k=0;Node* temp=NULL;while(true){//T2fin>>j>>k;if(j==0)break;//T3++(nds[k].v);temp=(Node*)malloc(sizeof(Node));temp->v=k;temp->next=nds[j].next;nds[j].next=temp;}//T4for(i=1;i<=cnt;++i){if(nds[i].v==0){zs.push(i);}}while(!zs.empty()){//T5LR.push(zs.front());--un_print;temp=nds[zs.front()].next;//T6while(temp!=NULL){if((--nds[temp->v].v)==0){zs.push(temp->v);}Node* t2=temp;temp=temp->next;free((void*)t2);}zs.pop();}if(un_print!=0){cout<<"Input Error"<<endl;exit(1);}while(!LR.empty()){cout<<LR.front();LR.pop();}cout<<endl;free(nds);return 0;
}

好啦,下次继续

TPS_AOV_2 Algorithm made by Knuth {照TAOCP 2.2.3 完成}相关推荐

  1. Donald Knuth 传奇

    作者:yueq Donald Knuth自传的开头这样写道:"Donald Knuth真的只是一个人么?"作为世界顶级计算机科学家之一,Knuth教授已经完成了编译程序.属性文法和 ...

  2. 常见算法在实际项目中的应用

    近日Emanuele Viola在Stackexchange上提了这样的一个问题,他希望有人能够列举一些目前软件.硬件中正在使用的算法的实际案例来证明算法的重要性,对于大家可能给到的回答,他还提出了几 ...

  3. 微软等数据结构+算法面试100题全部答案集锦

    微软等数据结构+算法面试100题全部答案集锦 作者:July.阿财. 时间:二零一一年十月十三日. 引言 无私分享造就开源的辉煌. 今是二零一一年十月十三日,明日14日即是本人刚好开博一周年.在一周年 ...

  4. 数据结构与算法 Big O 备忘录与现实

    不论今天的计算机技术变化,新技术的出现,所有都是来自数据结构与算法基础.我们需要温故而知新. 算法.架构.策略.机器学习之间的关系.在过往和技术人员交流时,很多人对算法和架构之间的关系感到不可理解,算 ...

  5. 顶级程序员的心得ndash;Coders at Work

    [原文在 www.yishan.cc 连载,  现在合成一篇] 我去年读了 "Coders at Work",   对15 位顶级程序员的采访, 总共600页. 从采访的模式看,有 ...

  6. 顶级程序员的心得 –– Coders at Work

    顶级程序员的心得 –– Coders at Work 说明:这篇文章是我 2010 年的原创,但是发现 csdn 的版本把格式全部搞坏了,原文在这里 我2009年读了 "Coders at ...

  7. 微软面试100题(含全部答案)

    引言 无私分享造就开源的辉煌. 今是二零一一年十月十三日,明日14日即是本人刚好开博一周年.在一周年之际,特此分享出微软面试全部100题答案的完整版,以作为对本博客所有读者的回馈. 一年之前的10月1 ...

  8. 微软面试100题2010年版全部答案集锦

      微软等数据结构+算法面试100题全部答案集锦 作者:July.阿财. 时间:二零一一年十月十三日. 引言 无私分享造就开源的辉煌. 今是二零一一年十月十三日,明日14日即是本人刚好开博一周年.在一 ...

  9. 重磅分享:微软面试100题2010年版全部答案完整亮相

    欢迎zhangxusoftgcy我的:资源博客空间简历设置|帮助|退出 CSDN首页 资讯 论坛 博客 下载 搜索 更多 CTO俱乐部 学生大本营 培训充电 移动开发 软件研发 云计算 程序员 TUP ...

  10. 微软等数据结构+算法面试100题全部答案完整亮相

    重磅分享:微软等数据结构+算法面试100题全部答案完整亮相 来源: 王永刚的日志 本文转载自CSDN大牛的一篇博客:http://blog.csdn.net/v_july_v/article/deta ...

最新文章

  1. 软件测试:黑盒白盒与动态静态之间有必然联系吗
  2. 30个Python常用极简代码,拿走就用
  3. 数学之美 系列十一 - Google 阿卡 47 的制造者阿米特.辛格博士
  4. 搭建Hexo最后一步:hexo d时 没反应 直接跳过解决办法(转)
  5. .NET Core 使用MailKit发送电子邮件
  6. 如何分辨PoE工业交换机是否标准供电
  7. 单片机常用的几种通信协议
  8. P8级别的顶级“并发编程”宝典,最全指南
  9. 内含福利|CSDN携手字节跳动:云原生Meetup北京站报名热烈启动,1月8日见!
  10. rsync 自动创建目录的坑点
  11. 路床灰土计算机控制,亳阜高速公路路床灰土施工方案
  12. Go 语言学习总结(1)—— Go 入门简介
  13. SqlServer 分页批按时间排序
  14. 解题报告:poj2689 Prime Distance
  15. 启动Activity不显示界面
  16. vue 第八天 小结 作业模拟购物车
  17. 溢出植入型木马(后门)的原型实现 作者:FLASHSKY(原创)
  18. 使用fiddler绕过“请在微信客户端打开链接”
  19. 动手实践 用 easyboot 制作N合一光盘
  20. windows10删除$WINDOWS.~BT文件

热门文章

  1. 硬盘播出系统_昌吉广播电视台中型多功能演播室系统概述
  2. 元旦节前python网络编程趣味小游戏
  3. 全世界最全牛人博客,你可以学习到太多!
  4. DllRegisterServer引出函数实现
  5. docker本地仓库(本地镜像仓库)环境搭建
  6. Perhaps JAVA_HOME does not point to the JDK的解决方法
  7. 计算机硬件报警声音,电脑开机报警声音大全详解及处理
  8. 基于Arduino的智能环境监测与反馈系统
  9. js加载flv格式视频
  10. 用计算机算加班,加班工资计算器