第三次寒假作业

Posted zhanglingxin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第三次寒假作业相关的知识,希望对你有一定的参考价值。

一 本次作业代码的修改

本次作业的代码,文件的链接为 [lift]https://github.com/zhanglingxin/lift

1文件输入输出

这次将作业改为文件的输入输出,我在代码中插入了 FILE *fpRead=fopen("input.txt","r");
并将输入改成了

 {
 	for(j=0;j<3;j++)
 	{
 		if(j<2)
 		fscanf(fpRead,"%d ",&in[i][j]);
 		else fscanf(fpRead,"%d",&in[i][j]);
	 }
  } ```
生成了```input.txt```
在输入上我将代码中插入了一行``` FILE *fpWrite=fopen("output.txt","w"); ```
并将输出改成了
```for (i=0;i<5;i++)
{
	if (ele[i].time>sumtime)
	{
		sumtime+=abs(ele[i].time-sumtime)+1;
	 } 
	fprintf(fpWrite,"%d时,停靠在%d楼\\n",sumtime,ele[i].begin);
	sumtime+=abs(ele[i].end-ele[i].begin)+1;
	fprintf(fpWrite,"%d时,停靠在%d楼\\n",sumtime,ele[i].end);
}```
生成了```output.txt```
##<font color="#660066">2控制电梯的函数</font><br/>
在函数中,最终有
```void pickup(int ,int ,int ,int *,int* );
void stop(int*);
int getData(char);
void lift(char*);```控制电梯的运行
并且有
```void getComb(int); /*get all Possible pickup*/```
```void writeComb(); /*write pickup order*/```
```void swap(int, int); /*support function for getComb*/```的函数控制电梯选择相对最优的接人方式。
控制电梯的运行的函数如下
```void stop(int* time)
{
 *time+=1; 
}```
```void pickup(int passengerFloor,int targetFloor,int requestTime,int *time,int* floor)
{
 *time+=requestTime;
 *time+=(abs)(*floor - passengerFloor);    
 *time+=(abs)(passengerFloor-targetFloor);    
 *floor=targetFloor;
}```
```int getData(char data){
 char tmp[2];
 tmp[0]=data;
 tmp[1]=\'\\0\';
 return atoi(tmp);
 }```
控制电梯选择相对最优的解的函数如下
```void getComb(int offset){
    int i, temp;
    if(offset == 5-1){  // BaseCase
        writeComb();
        return;
    }else{
        for(i = offset;i < 5; ++i){
            swap(i, offset);//swap 
            getComb(offset + 1);//recursive
            swap(i, offset);//swap back
        }
    }
}```

```void writeComb(){
    int i;
    for(i = 0; i < 5; ++i)
    {
      pickupOrder[combCount][i]=a[i];
    }
    combCount++;
}```

```void swap(int i, int offset){
    int temp;
    temp = a[offset];
    a[offset] = a[i];
    a[i] = temp;
}```

##<font color="#660066">3代码改进过程</font><br/>
将代码的穷举法的一些特殊情况没能做出正确的改动了,
总时间  :28小时;
debug数:6;
行数 :229行;

##<font color="#660066">4测试样例</font><br/>
这次样例,我用了 如下样例
|1 2 3| 2 3 4|3 4 5 |4 5 6|5 6 7|
输出结果:
![](https://images2018.cnblogs.com/blog/1330484/201802/1330484-20180222103432772-91872805.png)
这组数据和我的思路符合,因为要去7楼,中间停5次
|0 1 0|0 2 0|0 3 0|0 4 0|0 5 0|
输出结果:
![](https://images2018.cnblogs.com/blog/1330484/201802/1330484-20180222103727479-808063593.png)
这组数据也和我的想法符合
根据上次作业所得出的结果,这个电梯大致上是比较靠谱的,当然还有其他bug需要进一步改进
*
#<font color="#006666">二git心得</font><br/>
      用git传代码真的是一个艰难的过程,我看完教程还是不是很懂,然后去百度了一下,后来发现我的邮箱还没有。。。。。。。。。。然后我就建了一个邮箱。并开始传作业但是第一次传作业的时候还经常报错。都是找不到那个文件的错误, 然后我就上网搜解决方法但是还是不能解决。最后我问了大佬然后重新上传了一遍。

 上传的图
  ![](https://images2018.cnblogs.com/blog/1330484/201802/1330484-20180220125952815-2060503109.png)
上传日志
![](https://images2018.cnblogs.com/blog/1330484/201802/1330484-20180221222455760-197289305.png)

以上是关于第三次寒假作业的主要内容,如果未能解决你的问题,请参考以下文章

第三次作业

第三次作业

第三次作业

第三次作业

第三次作业

[NWPU2016][寒假作业][正常版第三组]I