• 贪心算法之加油问题


    • 【汽车加油问题】一辆汽车加满油后可以行驶n千米。旅途中有k个加油站。若要使沿途的加油次数最少,设计一个有效的算法,指出应在那些加油站停靠加油。
    •  数据输入:由文件input.txt 给出输入数据。第一行有2个正整数n和k,表示汽车加满油后可行驶nkm,且旅途中有k个加油站。接下来1行中,有k+1个整数,表示第k个加油站与第k-1个加油站之间的距离。第0个加油站表示出发地,汽车已加满油。第k+1个加油站表示目的地。
    • 结果输出:将编程计算出的最少加油次数输出到文件ouput.txt。如果无法到达目的地,则输出“No Solution”。
    • 输入文件示例              输出文件示例
    • Input.txt                    output.txt
    • 77                              4
    • 12 3 4 5 1 6 6            
    • 要求:
    • 采用贪心算法,编程计算并输出最少加油次数,以及指出应在那些加油站停靠加油。
    • #include
      int main()
      {
          FILE *fp;//文件指针
          int a[100],b[100];
          int i,n,k,flag,sum,count,temp;
          fp=fopen("input.txt","r");
          if(fp==NULL)
          {
              printf("无法打开文件!\n");
              exit(0);
          }
          flag=0;
          i=0;
          temp=1;
          while(!feof(fp))
          {
              if(flag==0)
                  fscanf(fp,"%d%d",&n,&k);//从文件中读取n,k
              flag=1;
              if(flag!=0)
                  {
                      fscanf(fp,"%d",&a[i++]);//从文件中读取加油站之间的距离
                      if(a[i]>n)//如果两站距离大于n,则说明无法到达目的地
                         temp=0;
                  }
          }
          fclose(fp);
          if(temp==0)
          {
              fp=fopen("output.txt","w");
              fprintf(fp,"No Solution");
              fclose(fp);
              return 0;
          }
          count=0;
          sum=0;
          for(i=0; in)
              {
                  i--;
                  b[count++]=i+1;
                  sum=0;
              }
          }
          fp=fopen("output.txt","w");
          fprintf(fp,"%d",count);//把数据写到文件中去
          fclose(fp);
          return 0;
      }
      
  • 相关阅读:
    Spring MVC的主要组件?
    元宇宙:活在未来
    分类预测 | Matlab实现CNN-SVM多特征分类预测
    C语言之实现贪吃蛇小游戏篇(2)
    java计算机毕业设计ssm二手商品交易平台系统
    LINUX命令-sed
    实战PyQt5: 141-QChart图表之箱形图
    1521_AURIX TC275 FPI总线系统寄存器
    Java21虚拟线程实践
    3.2队列
  • 原文地址:https://blog.csdn.net/G11176593/article/details/127921229