今天网易的笔试,妹的,算法题没能A掉,虽然按照思路写了出来,但是尼玛好歹给个测试用例的格式呀,吐槽一下网易的笔试出的太烂了。
就一道算法题,比较石子重量,个人以为解法应该是拓扑排序。
就去POJ找了道拓扑排序的题:POJ2367
直接上代码吧:
#include<stdio.h> #include<string> #define clr(x) memset(x,0,sizeof(x)) int g[101][102]; int indegree[102]; int res[102]; using namespace std; int main() { int n,p,top; while(scanf("%d",&n)!=EOF) { clr(g); clr(indegree); for(int i=1;i<=n;i++) { while(scanf("%d",&p),p) { g[i][p] = 1; indegree[p]++; } } top = 0; for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) { if(indegree[j] == 0) { res[top++] = j; indegree[j] = -1; for(int k=1;k<=n;k++) if(g[j][k]==1) indegree[k] -- ; break; } } } for(int i=0;i<top;i++) { printf("%d%c",res[i],i==top-1?'\n':' '); } } return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步