【发布时间】:2014-12-14 08:14:39
【问题描述】:
这是我的 C 类编程作业:
有一列火车驶入您的航站楼。 Train 有 N 个货物,货物标记为从 1 到 N。您必须按照从 N 到 1 的顺序将货物送出码头(如
6 5 4 3 2 1)。1 5 3 4 2是一个有 5 个货物的进站火车的例子。您的终端有许多导轨。这是带有 5 条导轨的终端的样子:
您的终端只允许进行 3 次操作:
- 将您收到的货物送出码头。
- 将您收到的货物送到终点站轨道。
- 将货物从铁路运出码头。
例子:来车是
1 2 3。INPUT :您必须接收作为火车货物的输入,例如
1 2 3。输入列车的货物不超过 100 个。OUTPUT : 显示尽可能少的rails来完成这个过程,在上图中,输出应该是
1。
我认为我的 (psudo) 代码应该类似于:
for(int i = 1; i <= cargoAmount;)
{
if(i == trainin.top()) //found in IN: send the cargo out
{
trainin.pop();
i++;
continue;
}
for(j = 0; j <= TotalStackCurrentlyInUse??; j++) //found in a RAIL: send the cargo out
{
if(i == rail[j].top())
{
rail[j].pop();
i++;
break;
}
}
if(j == TotalStackCurrentlyInUse) //Not found: Send the train to the rail stack
SendTheTrainToTheRail();
// I will try to write this thing later
// I have the idea that the new cargo should have the value lass than rail[j].top()
}
现在我认为我应该在我的 C 应用程序中使用许多动态堆栈(每个堆栈代表终端中的每个轨道)并且我应该跟踪程序使用的堆栈数量。我的朋友告诉我,我应该忘记整个堆栈的事情,只需使用链表先创建 100 个rail[j].head,然后它就会变得容易。但我只是想知道如何使用堆栈来实现(如果 C 语言既难又乱,我可以使用 C++ 堆栈和向量)。
问题:如何在 C 或 C++ 中创建动态堆栈的动态数组以及如何跟踪当前使用的堆栈数量。(请注意,我对 C++ 很陌生,所以这个问题可能看起来很愚蠢)
【问题讨论】:
-
为什么一个堆在这里不能满足您的目的...铁路可以存储的最大货物数量吗???
-
你好像只需要一根铁轨,只要它可以容纳 99 节车厢,还是有些火车到达时的车厢顺序混乱?
-
列车长度限制为 100,应该可以只使用静态或自动分配,最坏的情况是 99 轨 (99,98...2,1,100),需要的最长轨是 99 . (1,2,...,99,100)
-
@Jasen 这不会太消耗内存吗?它将花费 99*99 整数(或者可能是 99*99 短裤)。
-
没有“C/C++”之类的东西。有 C,也有 C++。我从未见过任何标有“C/C++”的好东西。如果你想知道如何用 C++ 编写代码,你需要学习专门用 C++ 编写代码,而不是将 C++ 视为 C 之上的一些不错的可选附加功能。
标签: c++ c arrays jagged-arrays