集装箱C语言
① 集装箱中HC 和HQ有什么区别
HC/HQ一样的!!都是高箱(高度在2.9M;9英尺6英寸)! HC/HQ一般用语40英尺集装箱,目前还没有发现有船公司说过20HQ或者HC的,一般就是20GP/ST;(GP和ST也一样都是普通箱)20/OT ;40FT 40OT 40HC/HQ; !!!一般有以下几种箱子, 干货箱(DRY CARGO CONTAINER)
开顶箱(OPEN TOP CONTAINER)
通风箱,(VENTILATED CONTAINER)
台架箱(PLATFORM BASDED CONTAINER)
冷藏箱(REDFER CONTAINER)
罐式箱(TANK CONTAINER)
汽车集装箱(CAR CONTAINER)
② 已知货物长宽高的装箱问题,求c语言代码
你这N 到底是多少 ,求具体数值。
③ C语言关于装载问题(背包问题)的一个程序 我写的程序输出不满足题意 但我检查不出来错误 希望大神解决
想法:是先让c1船尽量装货物是可以的,但是算法应该不对,可以用下面的算法
// 前k个数中去任意个数,且这些数之和为s的取法是否存在
int main()
{
int n, i, k1, k2, s, u;
cin >> n;
for (i=1; i<=2*n; i++)
cin >> A[i];
int sum = 0;
for (i=1; i<=2*n; i++)
sum += A[i];
memset(dp,0,sizeof(dp));
dp[0][0]=true;
// 外阶段k1表示第k1个数,内阶段k2表示选取数的个数
for (k1=1; k1<=2*n; k1++) // 外阶段k1
{
for (k2=k1; k2>=1; k2--) // 内阶段k2
for (s=1; s<=sum/2; s++) // 状态s
{
//dp[k1][s] = dp[k1-1][s];
// 有两个决策包含或不包含元素k1
if (s>=A[k1] && dp[k2-1][s-A[k1]])
dp[k2][s] = true;
}
}
// 之前的dp[k][s]表示从前k个数中取任意k个数,经过下面的步骤后
// 即表示从前k个数中取任意个数
for (k1=2; k1<=2*n; k1++)
for (s=1; s<=sum/2; s++)
if (dp[k1-1][s]) dp[k1][s]=true;
// 确定最接近的给定值sum/2的和
for (s=sum/2; s>=1 && !dp[2*n][s]; s--);
}
④ 子集树问题(用C语言或C++完成)
//说明:我是用c++编的。解法是用栈来进行递归模拟,解法编译过是正确的。我有注释说明。不过要改成递归比较麻烦。而且,解题一般是不会限制解法的,你看看这个非递归的解法吧。
#include <iostream>
#include <string>
using namespace std;
void main(){
int i,j,n,c,temp,L[100],S[100],p,sum,Get,max;
cin>>n>>c;
for (i=0;i<n;i++){
cin>>L[i];
}
max=0;
sum=0;
p=-1;//栈初始化
for (i=0;i<n;i++){
if (sum+L[i]<=c) {
sum=sum+L[i];
p++;
S[p]=i;//i入栈
break;//寻找第一个
}
}
while ((p!=-1)||(i<=n-1)){//当栈不空或未检索到末尾时运行
if (i<=n-1){//如果是未检索到末尾时
Get=S[p];//取栈顶元素
for (i=Get+1;i<n;i++){
if (sum+L[i]<=c) {
sum=sum+L[i];
p++;
S[p]=i;//i入栈
}
}
}
if(i==n){//如果检索到末尾但栈不为空时
if (sum>max) max=sum;
Get=S[p];//取栈顶元素
/*for (j=0;j<=p;j++){
temp=S[j];
cout<<L[temp]<<" ";
}
cout<<endl;*///说明此处用来检验栈模拟的过程,及其正确性,可输出解的子集,你可以看看
p--;//模拟出栈
//cout<<max<<" ";
sum=sum-L[Get];//还原
for (i=Get+1;i<n;i++){//
if (sum+L[i]<=c) {
sum=sum+L[i];
p++;
S[p]=i;//i入栈
break;//寻找下一个
}
}
}
}
cout<<max<<endl;
}
⑤ c语言中既然int比short int的范围大,为什么不直接用int就可以了呢
集装箱能装的东西比包装盒大得多,为什么包装食品不用集装箱呢?
c语言提供这么多种类型,就是为了让程序员根据自己的需要来选择合适的类型。
有的时候,条件有限,必须节省存储空间,如果short int,甚至char已经够用,那么就尽量不用int,知道了么。是根据实际情况来的。
⑥ C语言链表和栈,还用队列分别用于什么场合,请专业人士具体解说一下!
通常链表支持线性时间查找,线性时间访问,常数时间插入,常数时间删除,比较适合需要多次在中间插入和删除的场合
栈(stack)遵循先进后出原则(FILO),可用于模拟仓储,递归,深搜等其他符合FILO的模型
队列(queue)遵循先进先出原则(FIFO),可用于模拟排队,流,消息队列等符合FIFO的模型
其他具体情况就要视需要而定了