• 第三次寒假作业


    一 本次作业代码的修改

    本次作业的代码,文件的链接为 [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楼
    ",sumtime,ele[i].begin);
    	sumtime+=abs(ele[i].end-ele[i].begin)+1;
    	fprintf(fpWrite,"%d时,停靠在%d楼
    ",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]='';
     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)
  • 相关阅读:
    python print()输出指定小数位数的数字
    P35 线性回归两种求解方式总结
    P34 线性回归的策略、优化、案例
    P33 线性回归的定义及矩阵的运算
    P53 trainable 学习率的调整,梯度爆炸
    P52 线性回归的原理的复习及实现
    P51 可视化学习
    P50 运算API介绍
    P49 张量的定义以及数据
    P48 会话的run()方法
  • 原文地址:https://www.cnblogs.com/zhanglingxin/p/8455101.html
Copyright © 2020-2023  润新知