c++ - 查找以下算法的复杂性
问题描述
我在大学里有关于 C++ 的算法讲座,目前我们的主题是“动态编程”,我们获得了三个算法示例,但没有提供其他信息,例如:时间复杂度、内存使用情况,只提供了代码没有给定算法的名称。
我一直在努力寻找它们,但我只找到了三个中的一个,女巫原来是Floyd-Warshall 算法的某个模型版本,但其他算法的运气不佳。
我想其他两个代码也是对众所周知的算法的修改,所以如果 somwone 识别它们,请告诉我名称,我会找到复杂性细节以及它自己如何深入工作。
int t[MAXN],s[MAXN],M[MAXN];
void restore(int i)
{
if(i==1) {printf("(1) ");return;}
if(i==2)
{ if(M[2]== t[1]+t[2])
{ printf("(1) (2) ");return;}
else { printf("(1 2) " );return;};
}
if(M[i]==t[i]+M[i-1])
{ restore(i-1); printf("(%d) ",i);}
else
{restore(i-2); printf("(%d %d) ",i-1,i);}
}
这是第一个代码。
int G[MAXN][MAXN]; //сп. на съседите
int H[MAXN][MAXN]; //сп. на предшеств.
int L[MAXN],N, s[MAXN];//топ. сортирани върхове
void opt()
{ top_sort(G,s);//
for(int i=1;i<=N;i++)
{ int k=s[i]; L[k]=0;
if(H[k][0]!=0)
{ for(int j=1;j<=H[k][0];j++)
if(L[H[k][j]]>L[k]) L[k]=L[H[k][j]];
L[k]++;
}
}
}
解决方案
推荐阅读
- swift - 快速设置操作
- python - 缺少正确的 numpy 百分位数的参数?
- mysql - 如何在我的 sql innodb 中构建名称序列
- ruby-on-rails - VS Code/Ruby,转到文件中的符号匹配的行为与转到文件不同
- javascript - 如何阻止图像被 jQuery each() 加载?
- ios - 关闭项目后位置不再记录
- javascript - 创建通用“next()”和“prev()”按钮时出现 Javascript 错误
- gradle - 配置影子插件以构建仅包含依赖项的胖 jar
- python - 神经网络适应输出变化而不是学习特征
- php - 组合简单、几乎相同的 Select 语句