📄 result.h
字号:
#define INIT_SIZE 1000 //定义解的数组的初始长度
#define ADD_SIZE 5 //定义解的数组每次追加分配的长度
#define MAX_D 10 //为问题矩阵设置空间大小
//定义栈的数据元素的数据类型
typedef int SElemType;
#include "stack.h"
//实现解的数组的数据类型
typedef int Result[MAX_D+1];
typedef struct{
Result *elem;
int listsize;
int top;
}RList;
//**************************实现解的数组的各项操作*************
status InitRList(RList &a){
//初始化解的数组
//当为解的数组分配空间失败时返回出错信息
a.elem=new Result[INIT_SIZE];
if (!a.elem) return OVERFLOW;
a.top=-1;
a.listsize=INIT_SIZE;
return OK;
}
status ClearRList(RList &a){
//将解的数据清空,分配的空间保留
if (!a.elem) return ERROR;
a.top=-1;
return OK;
}
status EnElem(Stack s,RList &a){
//将栈中的解加入解的数组
//当解的数组已满则为数组重新分配空间
//当空间分配失败时返回出错信息
int i,j;
if (!a.elem) return ERROR;
if (a.top==(a.listsize-1)){ //为数组重新分配空间
Result *temp=a.elem;
a.listsize+=ADD_SIZE;
a.elem=new Result[a.listsize];
if (!a.elem) return OVERFLOW;//空间分配失败时返回出错信息
for(i=0;i<=a.top;i++) //将原数组中的解复制进新的数组
for(j=0;j<=a.elem[i][0];j++)
a.elem[i][j]=temp[i][j];
delete []temp; //释放临时空间
}
//将栈中的解加入解的数组
a.top+=1;
for(i=1;i<=StackLength(s);i++)
a.elem[a.top][i]=s.elem[i-1];
a.elem[a.top][0]=StackLength(s);
return OK;
}
status SaveResult(Stack s,double M,double vol,RList &r){
//判断当前栈中的解是否是最佳解
//如果是则将其加入解的数组
//否则不进行任何操作
//如果当前解优于数组中的解则将数组清空间当前解入解的数组
if (vol>M) return OK;
if (vol==M) {EnElem(s,r);return OK;}
ClearRList(r);
EnElem(s,r);
return OK;
}
status OutputResult(RList r){
//格式输出解的数组中的各组解
//当解的数组为空时则输出提示--无解
int i,j;
if (r.top==-1) {cout<<endl<<"No Answer !";return OK;}
for(i=0;i<=r.top;i++){
cout<<endl;
for(j=1;j<=r.elem[i][0];j++) {
cout<<"("<<j<<","<<r.elem[i][j]<<")";
}
}
return OK;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -